2016-09-10 21 views
1

我在android中使用某些任務的服務,我希望我的服務每次都運行。 但是,當我清除Android手機的RAM我的服務被殺害,而不是重新啓動。 我讀過幾篇文章,其中建議START_STICKY將解決問題,但它不會發生。在Android的服務沒有重新啓動

以下是我的服務代碼onStartCommand,我將返回START_STICKY。在這種情況下,即使onDestroy也沒有被調用。

public int onStartCommand(Intent intent, int flags, int start_Id) { 
    return START_STICKY; 
} 
+0

如果操作系統關閉了你的服務,它會重新啓動,如果你這樣做的話不是 – pskink

+0

你使用的是什麼版本的android? – JoxTraex

+0

我正在使用API​​級別24 – tarun

回答

0

嘗試使用此功能在強行停止後重新啓動服務。

注意:如果您也在其他地方停止此服務,那麼它也會重新啓動服務,因此您必須檢查此功能,以便停止服務或強制停止服務。 如果您自己停止服務,則在共享首選項中保存服務停止類型[Not Forcefully],並使用該狀態檢查不再啓動它。

@Override 
    public void onTaskRemoved(Intent rootIntent){ 
     Intent restartServiceIntent = new Intent(getApplicationContext(), this.getClass()); 
     restartServiceIntent.setPackage(getPackageName()); 

     PendingIntent restartServicePendingIntent = PendingIntent.getService(getApplicationContext(), 1, restartServiceIntent, PendingIntent.FLAG_ONE_SHOT); 
     AlarmManager alarmService = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
     alarmService.set(
       AlarmManager.ELAPSED_REALTIME, 
       SystemClock.elapsedRealtime() + 5000, 
       restartServicePendingIntent); 

     super.onTaskRemoved(rootIntent); 
    } 
+0

此代碼不適用於我,但我注意到一件事,當我清除我的手機onTaskRemoved()方法調用RAM。在onTaskRemoved方法中,我正在發送廣播。在廣播中,我正在重新啓動我的服務。廣播接收者在調用onStartCommand()方法調用我的服務之後,現在我的服務在我的移動設備的運行過程中不可見。 – tarun