保持service一直在后台运行

一.异常关闭

在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,重启)