天天看點

保持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();

}