发布网友 发布时间:2022-05-13 22:09
共5个回答
热心网友 时间:2023-07-31 01:49
Android开机启动Service,需要使用BroadcastReceiver,Android系统,开机会发送一个开机广播,可以通过BroadcastReceiver来接收开机广播。热心网友 时间:2023-07-31 01:50
1、首先创建一个广播接收者,重构其抽象方法 onReceive(Context context, Intent intent),在其中启动你想要启动的Service。import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class BootBroadcastReceiver extends BroadcastReceiver {//重写onReceive方法@Overridepublic void onReceive(Context context, Intent intent) {//后边的XXX.class就是要启动的服务Intent service = new Intent(context,XXXclass);context.startService(service);Log.v("TAG", "开机自动服务自动启动.....");}}配置xml文件,在receiver接收这种添加intent-filter配置<receiver android:name="BootBroadcastReceiver"<intent-filter<action android:name="android.intent.action.BOOT_COMPLETED"</action<category android:name="android.intent.category.LAUNCHER" /</intent-filter</receiver添加权限处理<!--此权限在高版本中可以省略,你可以测试--热心网友 时间:2023-07-31 01:50
首先开机启动后系统会发出一个Standard Broadcast Action,名字叫 android.intent.action.BOOT_COMPLETED ,这个Action只会发出一次。
构造一个IntentReceiver类, 重构其抽象方法onReceiveIntent(Context context, Intent intent), 在其中启动你想要启动的Service。
在AndroidManifest. xml中,首先加入 <uses-permission android:name=android.permission.RECEIVE_BOOT_COMPLETED</uses-permission 来获得BOOT_COMPLETED的使用许可,然后注册前面重构的IntentReceiver类,在其 <intent-filter中加入<actionandroid:name=android.intent.action.BOOT_COMPLETED / ,以使其能捕捉到这个Action。一个例子xml:<uses-permission android:name=android.permission.RECEIVE_BOOT_COMPLETED</uses-permission <receiver android:name=.OlympicsReceiver android:label=@string/app_name <intent-filter <action android:name=android.intent.action.BOOT_COMPLETED / <category android:name=android.intent.category.LAUNCHER / </intent-filter </receiverjava:public class OlympicsReceiver extends IntentReceiver{/*要接收的intent源*/ static final String ACTION = android.intent.action.BOOT_COMPLETED; public void onReceiveIntent(Context context, Intent intent){if (intent.getAction().equals(ACTION)){context.startService(new Intent(context, OlympicsService.class), null);//启动倒计时服务 Toast.makeText(context, OlympicsReminder service has started!, Toast.LENGTH_LONG).show();}}}注意:现在的IntentReceiver已经变为BroadcastReceiver,OnReceiveIntent为onReceive。所以java这边的代码为: (也可以实现应用程序开机自动启动) public class OlympicsReceiver extends BroadcastReceiver{/*要接收的intent源*/ static final String ACTION = android.intent.action.BOOT_COMPLETED; public void onReceive(Context context, Intent intent){if (intent.getAction().equals(ACTION)){context.startService(new Intent(context, OlympicsService.class), null);//启动倒计时服务//这边可以添加开机自动启动的应用程序代码}}}
热心网友 时间:2023-07-31 01:51
Android中,当Service被kill后,如果重启需要使用BroadcastReceiver来实现,即广播接收者,例如利用BroadcastReceiver注册网络广播或者开关机广播,当接收到广播后直接启动service,这样就可以保证service被kill后,自动启动。热心网友 时间:2023-07-31 01:51
同问。。。