您的位置:首页 > 移动开发 > Android开发

android之手机开机启动Service服务

2015-03-08 18:07 471 查看
之前,介绍了四大组件的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广播.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: