之前,介绍了四大组件的BroadCastReceiver和Service,这次我们利用广播来启动Service服务. 这种实现在很多APP都有出现,比如很多应用安装后,只要使用过一次,后面重启手机它可能就会推送一些消息给用户的手机,在顶栏显示某个应用又有什么消息之类的.这只是Service的行为, 只要成功启动了Service服务,还可以根据需要自定义其他的行为.
关于BroadCastReceiver,这里根据之前的介绍补充一点,就是静态配置和动态配置的不同:
在AndroidManifest.xml里面配置是静态配置,在代码里配置则是动态配置.动态配置比静态配置要快.而静态配置的优点是即使应用没有启动, 也能接收到特定的广播.从而在特定的广播接收器去自定义一些行为.我们应该根据需要去选择不同的实现.
开机启动Service的原理:
手机成功启动后会发出一个ACTION_BOOT_COMPLETED的广播,在应用的AndroidManifest.xml的广播配置里面配置接收这条广播的广播接收器,然后再接收器中启动指定的Service服务.
首先给AndroidManifest.xml加上可以拦截这个广播的权限:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
配置广播接收器
<!– 配置广播接收器 –><receiver android:name="com.test.myapp.MyReceiver"><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED"></action></intent-filter></receiver>在自定义MyReceiver的onReceive()中去启动指定的Service:public class MyReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {//在这里启动MyServiceIntent intent = new Intent();intent.setAction("com.test.myapp.MyService");context.startService(intent);}}这样就完成了开机启动Service服务,至于要在Service里面去做什么就根据需要去自定义吧. 值得注意是,在3.0以上的系统,该应用必须至少被启动过一次,后面才能成功捕获ACTION_BOOT_COMPLETED广播.
,成功是什么?就是走过了所有通向失败的路,