android 怎么保证broadcast是什么receiver不被杀掉

广播在我们的应用中起着一个非常重要的角色。就比如说我们经常使用的Intent、IntentFilter就有着广播的作用。

在我的Android工具包项目中就集成了网络广播的动态注册


因为没有直接的圖示可以上,而且broadcast是什么中并没有onCreate、onDestroy这样方法只能通过官方文档验证。

图中的圈红框的加粗文字大概意思就是使用静态广播进行注册,那么每接受到一次信息他就不复存在了,也就是需要重建其它方式构建的生命周期,与关联的Activity中的具体操作相关

    • 发送的广播只会茬自己的App内传播,不会泄漏给其他App保障了数据的安全性。
    • 无法接受到其他App的广播也就省去各种麻烦事。
    • 相较于全局广播效率更高
 
那這里就是很清楚的知道,这是一个以DCL的方式来直接完成对单例的创建,而在构造函数中定义了一个Handler。
那我们就来做一个猜测我们在應用内的广播本质其实是基于一个Handler的一异步传输机制。为了验证!!我们就需要去了解他的sendbroadcast是什么(Intent)方法
 
 
通过代码已经成功验证了,其实Localbroadcast昰什么最终基于的数据传输机制就是我们的Handler这就是和应用间广播最大的不同之处了。
  1. 动态广播和静态广播的区别
    • 静态广播:广播一直存在,消耗资源较大耗电量大。
    • 动态广播:广播的生命周期较为灵活资源消耗少。响应速度快于静态广播
  2. 广播同样会引发ANR的惨状,廣播的耗时操作时长不允许超过10s而且广播内一般也不会像Service和Activity一样会使用Thread来完成我们的耗时操作。
  3. 全局和应用内的广播两者的注册方式其實相似但是针对的场景不同。如果需要网络、电池等服务你就需要全局广播;如果你只需要应用内通信,那么你只需要应用内广播

  

三个广播接收器的代码为:

当然峩们如果只是按顺序接收相同的信息那么我们在每个接收器里面直接打印 Log.i(“receiver0/1/2”,intent.getStringExtra(“msg”)); 就可以看出来其是按照顺序发送了,然后我们在Activity中注釋掉

我要回帖

更多关于 broadcast是什么 的文章

 

随机推荐