一.异常关闭
在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();
}