当前位置: 首页 > news >正文

园林建设网站国内最好的搜索引擎

园林建设网站,国内最好的搜索引擎,毛戈平化妆培训学校官网,企业信用大部分隐式广播无法通过静态注册接收,除了以下白名单广播: ACTION_BOOT_COMPLETED ACTION_TIMEZONE_CHANGED ACTION_LOCALE_CHANGED ACTION_MY_PACKAGE_REPLACED ACTION_PACKAGE_ADDED ACTION_PACKAGE_REMOVED 需要以动态注册方案替换: cl…

大部分隐式广播无法通过静态注册接收,除了以下白名单广播:

ACTION_BOOT_COMPLETED
ACTION_TIMEZONE_CHANGED
ACTION_LOCALE_CHANGED
ACTION_MY_PACKAGE_REPLACED
ACTION_PACKAGE_ADDED
ACTION_PACKAGE_REMOVED

需要以动态注册方案替换:

class MainActivity : AppCompatActivity() {private val receiver = object : BroadcastReceiver() {override fun onReceive(context: Context, intent: Intent) {// 处理广播}}override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)// 使用动态注册替代静态注册registerReceiver(receiver, IntentFilter().apply {addAction("your.custom.action")})}
}

后台应用发送广播受到限制:

// 后台应用发送广播限制
// 解决方案:
// 1. 使用前台服务
startForegroundService(intent)// 2. 使用 LocalBroadcastManager
LocalBroadcastManager.getInstance(this).sendBroadcast(intent)// 3. 使用显式广播
Intent(this, MyReceiver::class.java).also { intent ->sendBroadcast(intent)
}

性能优化建议:

// 使用有序广播替代多个广播
sendOrderedBroadcast(intent, null)// 使用粘性广播替代定时轮询
sendStickyBroadcast(intent)// 使用 EventBus 等替代方案
implementation 'org.greenrobot:eventbus:3.2.0'

LocalBroadcastManager 的实现原理:

// LocalBroadcastManager 核心实现原理
class LocalBroadcastManager private constructor(private val context: Context) {// 1. 使用 Handler 处理消息private val handler = Handler(Looper.getMainLooper())// 2. 广播接收器的注册表private val receivers = HashMap<String, ArrayList<ReceiverRecord>>()// 3. 待处理的广播队列private val pendingBroadcasts = ArrayList<BroadcastRecord>()// 4. 注册广播接收器fun registerReceiver(receiver: BroadcastReceiver, filter: IntentFilter) {synchronized(receivers) {// 记录接收器和过滤器val record = ReceiverRecord(filter, receiver)filter.actionsIterator().forEach { action ->// 按 action 分类存储接收器receivers.getOrPut(action) { ArrayList() }.add(record)}}}// 5. 发送广播fun sendBroadcast(intent: Intent) {synchronized(receivers) {// 查找匹配的接收器val matchingReceivers = ArrayList<ReceiverRecord>()// 根据 action 找到对应的接收器receivers[intent.action]?.forEach { record ->if (record.filter.match(intent)) {matchingReceivers.add(record)}}if (matchingReceivers.isEmpty()) return// 将广播加入队列synchronized(pendingBroadcasts) {pendingBroadcasts.add(BroadcastRecord(intent, matchingReceivers))// 通过 Handler 发送消息handler.post {executePendingBroadcasts()}}}}// 6. 执行广播private fun executePendingBroadcasts() {while (true) {val broadcast = synchronized(pendingBroadcasts) {if (pendingBroadcasts.isEmpty()) nullelse pendingBroadcasts.removeAt(0)} ?: break// 在主线程分发广播broadcast.receivers.forEach { receiver ->receiver.receiver.onReceive(context, broadcast.intent)}}}
}

核心原理:

  1. 单例模式管理
  2. Handler 消息机制
  3. 同步队列处理
  4. 主线程分发
  5. 内存级别通信

实现特点:

  1. 不经过 AMS
  2.  无进程间通信
  3. 效率更高
  4. 安全性好
  5. 同步执行

优化设计:

  1. 避免广播风暴
  2. 减少内存占用
  3.  保证顺序执行
  4.  线程安全控制
  5. 生命周期管理
http://www.hkea.cn/news/117760/

相关文章:

  • 中铁建设门户加长版廊坊百度提升优化
  • 最便宜的外贸网站建设电商平台运营方案
  • 做网站应该会什么问题网络营销软文范例500字
  • 摄影网课百度关键词优化查询
  • 打广告型的营销网站西安百度推广外包
  • 乌鲁木齐招聘网站建设一站式网络营销
  • 中小型网站建设服务淘宝数据分析工具
  • 梧州网站设计企业网站模板建站
  • 行政事业单位网站建设建议营销策划公司
  • 网络推广网站怎么做百度联盟广告点击一次收益
  • wordpress居中样式宁波seo网络推广外包报价
  • java做网站用到哪些技术网络营销的重要性与意义
  • 网络营销推广的作用谷歌seo什么意思
  • 免费网站建设解决方案郑州网络营销公司哪个好
  • 转转怎么做钓鱼网站税收大数据
  • 株洲专业网站排名优化深圳产品网络推广
  • 深圳美食教学网站制作如何免费搭建自己的网站
  • 兰州移动端网站建设广东整治互联网霸王条款
  • 彩票网站该怎么建设天津seo实战培训
  • 原平的旅游网站怎么做的新冠疫情最新情况最新消息
  • 网站开发软件著作权归谁seo外包
  • 小说网站的网编具体做哪些工作南宁网站快速排名提升
  • 承德网站设计seo互联网营销培训
  • 工信部网站备案查询 手机seo专员的工作内容
  • 淘宝活动策划网站视频营销成功的案例
  • 精准营销数据杭州排名优化软件
  • 中卫网站建站设计seo学习论坛
  • wordpress初始登录seo排名赚app靠谱吗
  • 软件外包保密协议seo相关岗位
  • 后台网站开发文档下载班级优化大师app