`
mmdev
  • 浏览: 12933752 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

广播的类型

 
阅读更多
广播的种类:
1、sendBroadcast 普通广播: 所有注册监听该广播事件的的接收者都能接收到到广播
2、sendOrderedBroadcast 有序广播: 按优先级的大小的顺序接收广播,优先级大的接收者可以将广播废弃,让后面的接收者不能接收到广播。也可以修改广播的内容。
有序广播可以指定最后一个接收到消息的接收者,这时即使中途消息被abortBroadcast()了,还是能够收到信息。系统提供的打电话的广播接
收者就是这样的。
3、sendStickyBroadcast 粘性广播:另外开启一个线程,处理广播接收。没有10秒的限制。应用场景是,WIFI状态扫描。

广播接收者的生命周期:
广播接收者是运行在主线程里面的,运行时间不能超过10秒,如果超过10秒,系统就会将其阻塞。


广播接收者其实就像一个普通的类,在intent-filter中配置监听了一些动作。smsListener的例子就是用广播接收者监听了android.provider.Telephony.SMS_RECEIVED动作
而Service的生命周期更长,它也是监听一些动作,做一些事情。只不过它需要手动的添加对某些事件的监听器,并且监听到了后能做的事情更多。
tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
//注册一个电话状态改变的监听器.
tm.listen(new MyPhoneListener(), PhoneStateListener.LISTEN_CALL_STATE);
所以说,什么receiver ,什么service,其工作原理其实是一样一样儿滴!
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics