有很多时候,我们需要自己服务干掉之后,可以重新复活。
我以前总结了几种方法,现在就说说。
第一,在服务的onDestory()方法里面。startService(),就可以重新启动了。但是,这种方法有缺点是,如果我把整个应用的进程都干掉了,那就这样的方法就不起作用了。
第二,开启一个守护服务,但是这个方法同样面临着,应用的进程被干掉之后,不能重新启动问题。
第三,注册一个可以重复的闹钟,然后再闹钟发出的广播中启动服务,时时刻刻的启动自己的服务就行了,自己的服务也就不会被干掉了。
直接上代码:
第一,注册闹钟;
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent();
intent.setAction("short");
PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),3*1000,sender);
第二,静态注册广播;
<receiver android:name=".AlarmRecevier">
<intent-filter>
<action android:name="short" />
</intent-filter>
</receiver>
第三,在广播中启动服务;
public class AlarmRecevier extends BroadcastReceiver {
private static final String TAG = "AlarmRecevier";
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "" + System.currentTimeMillis());
Intent intent2 = new Intent(context, MyService.class);
context.startService(intent2);
}
}
需要注意的是:
广播必须静态注册。