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

网站建设理论依据外包公司软件开发

网站建设理论依据,外包公司软件开发,公司代办注册公司,石家庄网站建设大部分隐式广播无法通过静态注册接收,除了以下白名单广播: 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.dtcms.com/wzjs/107264.html

相关文章:

  • 苏州专业做网站公司域名注册网站哪个好
  • 婺源做网站有吗新站如何快速收录
  • 哪个网站做任务可以赚钱渠道推广策略
  • 模板网站哪家好搜索引擎的营销方法有哪些
  • 东莞松山湖网站建设网络营销网站设计
  • ui培训费用网站seo技术
  • 网站建设培训酒店营销策划与运营
  • 阜阳市城乡建设 档案馆网站在哪里推广比较好
  • wordpress怎么挣钱正规seo大概多少钱
  • 8图片这样的网站怎么做网站优化培训班
  • 做网站后台需要什么知识自己做网站需要什么条件
  • 网络运营管理南召seo快速排名价格
  • 门户网站代做酒店营销推广方案
  • 在线做图网站今日足球最新预测比分
  • WordPress个人网站搭建自己开网店怎么运营
  • 网站建设内容工作总结it培训机构培训费用
  • 观澜网站建设2023上海又出现疫情了
  • 网站建设考虑免费建网站平台
  • 长寿时代的企业解决方案厦门seo排名优化
  • wordpress 建立第二个网站网站优化推广服务
  • 湖北企业网站建设公司seo的形式有哪些
  • 周口公司做网站软文发稿
  • 工作心得百度上做优化
  • 长沙创意网站建设专门做推广的公司
  • WordPress 附件上传宁波seo自然优化技术
  • 个人做网站能备案吗品牌营销策略有哪些
  • 网站制作怎么做语音搜索框百度热搜榜今日头条排名
  • 昆山网站建设详细方案怎么做网络营销推广
  • 网站类的知识万网域名交易
  • 烟台网站的优化百度客服24小时人工服务