實際項目中,保證進程不被完全徹底殺死,是不可能的。
單進程守護場景: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項目結束,實際測試一下。關於源碼,請留下郵箱。