進程保活之單進程守護

實際項目中,保證進程不被完全徹底殺死,是不可能的。
單進程守護場景:home鍵,直接殺死進程,進程仍然處於運行狀態;
適用手機類型:50%的低中端手機,小米做的太好了,根本無法實現。
單進程守護原理:應用啓動開啓一個service,並在service的onDestroy()方法裏發送廣播,BroadcastReccevier裏重新startService;
代碼實現:
1、創建Service服務:

    public void onCreate() {
        super.onCreate();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        startTime();
        //返回值設置,保證後臺一直運行;
        return START_STICKY;
    }
    /**
     * 當進程被銷燬時,發送廣播重啓服務。
     */
    @Override
    public void onDestroy() {
        super.onDestroy();
        Intent broadCastIntent=new Intent("com.example.xiaoke.singleservice.ServiceRestartBroadCastReceiver.restart");
        sendBroadcast(broadCastIntent);
        stopTime();
    }

2、創建braodCastRecevier,接收到廣播重啓服務:

  @Override
    public void onReceive(Context context, Intent intent) {
        Log.d(TAG,"onReceive");
        context.startService(new Intent(context,RecreatService.class));
    }

3、清單文件配置:

  <service
            android:name=".RecreatService"
            android:enabled="true"
            android:exported="true"></service>
        <receiver
            android:name=".ServiceRestartBroadCastReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                    <action android:name="com.example.xiaoke.singleservice.ServiceRestartBroadCastReceiver.restart"></action>
            </intent-filter>
        </receiver>

ok項目結束,實際測試一下。關於源碼,請留下郵箱。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章