![](https://csdnimg.cn/release/download_crawler_static/9881497/bg5.jpg)
3.
高优先级的广播可以修改广播中的数据
4.
可以指定一个最终的广播接收者
注意
1.
每次接收广播都会重新生成一个接收广播的对象
2.
在BroadCast中尽量不要处理太多逻辑问题,建议复杂的逻辑交给
Activity或者Service去处理
静态订阅和动态订阅
静态订阅-->常驻型广播,程序关闭广播依然存在--
>AndroidManifest.xml进行订阅
动态订阅-->非常住型广播,程序关闭广播就关闭了-->比如你在Activity
中的onCreate或者onResume中订阅广播,同时你必须在onDestory或者
onPause中取消广播订阅.不然会报异常-->注意:动态订阅的时候是使用
隐式的Intent
优先级区别
1.
动态广播必须在程序启动之后才能收到广播,静态广播在
AndroidManifest.xml中注册,所以可以实现开机启动
2.
当静态广播和动态广播的优先级相同时,动态广播的优先级要高于
静态广播,因为静态广播会先存储在广播队列中,而动态广播会直接
起作用
Service
长期运行在后台,但也是运行在主线程的,不能进行耗时操作
start方式开启
1.
完整的生命周期:onCreate()-->onStartCommand()-->onDestory()
2.
特点
1.
服务可以被开启多次,每次开启都调用onStartCommand()
2.
服务只能被停止一次,多次停止无效
3.
长期运行在后台
bind绑定的方式
1.
完整的生命周期:onCreate()-->onBind()-->onUnbind()-->onDestory()
2.
特点
1.
服务只能被绑定一次,多次绑定无效
2.
服务只能被解绑一次,多次解绑抛出异常
3.
绑定Service的Activity和Service是同生共死的
4.
绑定服务调用服务里的方法
3.
两者开启的区别
1.
start开启服务可以长期运行在后台
2.
bind绑定服务可以调用服务里的方法
混合方式开启-->即想让服务长期运行在后台,又想调用服务里面的方法
1.
开启服务
2.
绑定服务
3.
解绑服务
4.
停止服务
耗时操作-->IntentService-->onHandlerIntent这个方法就是运行在子线程的
如何防止服务被干掉
1.
置为前台:startForeGround
2.
开启守护服务,当一个服务被干掉后,另外一个立马重新开启它
前台服务和后台服务的区别
前台服务:会在通知栏显示Notfication,当服务被终止的时候,通知栏的
Notfication也会消失
后台服务:系统默认服务
注意:前台服务需要调用startForeGround(Android2.0及以后版本),或
setForeGround(Android2.0以前版本)使服务成为前台服务.这样做的好