2016-10-26 29 views
0

我知道如果我在onStartCommand如何減少Android服務重啓時間?

返回 START_REDELIVER_INTENT

我寫了一個服務,並希望保持它活着用戶後關閉應用程序在最近列表

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 

    return START_REDELIVER_INTENT; 
} 

我的測試後,Android服務將重新啓動,我的服務將如果用戶關閉應用程序在最近列表

由於START_REDELIVER_INTENT被殺死,Android將自動重新啓動該服務,但時間太長

某些時間服務將在20秒內重新啓動,某些時間將在一分鐘內重新啓動,我該如何減少這段時間?在5秒鐘內更好。

回答

0

在您的Service類中使用此代碼。此應用程序被用戶清除時重新啓動服務。你可以返回START_STICKY到onstartCommand方法。

@Override 
    public void onTaskRemoved(Intent rootIntent) { 
     Intent intent2 = new Intent(this.getApplicationContext(), this.getClass()); 
     intent2.setPackage(this.getPackageName()); 
     PendingIntent pendingIntent = PendingIntent.getService((Context)this.getApplicationContext(), (int)1, (Intent)intent2,0); 
     ((AlarmManager)this.getApplicationContext().getSystemService(ALARM_SERVICE)).set(3, 500 + SystemClock.elapsedRealtime(), pendingIntent); 
     super.onTaskRemoved(rootIntent); 
    } 
+0

'onTaskRemoved()'不保證被調用,儘管它很少發生。 – Onik

+0

在我的情況下,它總是被調用。在你的情況下會發生什麼? –

+0

您是否在所有具有不同API版本的Android設備上測試過它?我談到了一般情況,而不是唯一經過測試的設備。 – Onik