之前,介绍了四大组件的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 {
@Override
public void onReceive(Context context, Intent intent) {
//在这里启动MyService
Intent intent = new Intent();
intent.setAction("com.test.myapp.MyService");
context.startService(intent);
}
}这样就完成了开机启动Service服务,至于要在Service里面去做什么就根据需要去自定义吧. 值得注意是,在3.0以上的系统,该应用必须至少被启动过一次,后面才能成功捕获ACTION_BOOT_COMPLETED广播.
本文详细介绍了如何通过Android系统中的广播机制,在应用的AndroidManifest.xml中配置开机启动Service服务,使得应用在手机启动后自动运行,提供用户及时通知或后台任务执行功能。同时,解释了静态配置与动态配置的区别,以及开机启动Service服务的原理。
1808

被折叠的 条评论
为什么被折叠?



