一.异常关闭
在onStartCommand的return中添加flag。
START_STICKY:如果service进程被kill掉,保留service的状态为开始状态,但不保留递送的intent对象。随后系统会尝试重新创建service
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
return START_STICKY;
}
二.正常关闭
正常关闭则必定经过onDestroy,所以在onDestroy中发广播,通过那个广播再启动service。
Service
@Override
public void onDestroy()
{
sendBroadcast(new Intent(GlobalData.RESTART_SERVICE));
super.onDestroy();
}
BroadcastReceiver
@Override
public void onReceive(Context context, Intent intent)
{
this.con = context;
new Thread(){
public void run() {
try
{
sleep(2000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
con.startService(new Intent(MY_SERVICE));
};
}.start();
}

本文介绍了如何实现Android Service在异常关闭后的自重启策略,并详细解释了使用START_STICKY标志来确保服务即使在意外终止后也能自动恢复运行的方法。此外,还提供了正常关闭Service并通过发送广播来触发Service重新启动的实现方案。
2390

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



