Service定义:
Service是Android四大组件之一,可以在后台长时间运行,为其他组件提供服务。
说明:
首先必须在AMF注册,接下里又到了生命周期了。。。PS:Service 是运行在主线中的 所以不要做耗时操作
这里主要说下两种启动方式的区别:
startService():开启后会一直开后台运行,需要手动关闭自身调用stopSelf()或者其他组件调用stopService();
其生命周期和其他组件无关,理论上可以在后台无限运行。原因不用我说了吧!!!
bindService():调用者和服务生命周期绑定,“同生同死”。
拓展:
IntentService:继承Service并异步处理请求,其内部通过HandleThread和Thread实现,优先级高于普通Service。
IntentService可以多次启动(了解HandlerThread的特性),每个耗时操作都会以工作队列的方式进行处理,且每次只处理一个线程。
特点:任务完成自动停止,异步处理。
使用:a.继承IntentService b.复写onHandlerIntent() 任务在其中操作
BroadcastReceiver定义:
BroadcastReceiver是Android四大组件之一,用于APP内或者App之间通讯,没有界面。
可以用来启动Activity和Service,或开启NotificationManage通知用户等等。
说明:
生命周期:我的生命只有15s,所以不能做耗时操作
同样要在AMF注册,四大组件都需要。
注册方式:
静态注册:
在AMS中注册,即使App关闭也能结束广播,4.0以后需要启动一次App后才可以。
<intent-filter android:priority="1000">
<action android:name="com.receiver.sss"/>
<intent-filter/>
动态注册:
用来注册的Activity关闭,广播不能再接受
registerReceiver(context, IntentFilter);
unregisterReceiver(receiver);
发送广播:
sendBroadcastReceiver(Intent);
sendOrderedBroadcast();发送有序广播
abortBroadcast();拦截广播,只对有序广播有效
广播的种类:
普通广播
有序广播
本地广播
Sticky广播
LocalBroadcastManager(本地广播)特点
PS:内部Handler来实现的
本地广播只能在自身App内传播,不必担心泄漏隐私数据
本地广播不允许其他App对你的App发送该广播,不必担心安全漏洞被利用
本地广播比全局广播更高效