2016-12-14 49 views
0

我嘗試在我的Android應用程序中使用服務,但我遇到了問題。當我在屏幕鎖定服務與中斷運行後按開啓/關閉按鈕,它看起來像服務正在重新啓動。這是我的代碼:防止服務在Android中重新啓動

public class MyService extends Service { 
private static String TAG = "Service"; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    Log.i(TAG, "onCreate"); 

} 

@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 
public void onDestroy() { 
    Log.i(TAG, "Destroyed"); 
    super.onDestroy(); 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Log.i(TAG, "OnStartcommmand"); 
    return START_STICKY; 
} 

} 

爲什麼我的服務重新啓動很多時間?我如何防止服務重新啓動?可能嗎 ? 謝謝

+0

回報START_NOT_STICKY在onStartCommand – Nas

回答

2

您的Service被System殺死以節省更高優先級應用程序的資源(例如:手機內存不足時)。遇難後,您可以重新創建Service,具體取決於onStartCommand上返回的值。如果您在onStartCommand上返回START_STICKY,系統將在殺死它之後重新創建服務。否則,START_NOT_STICKY告訴操作系統不要再次重新創建服務。

您可以考慮使用startForeground方法來保持您的Service有效。下面是文檔:

一個啓動的服務可以使用startForeground(INT,通知)API 把服務前臺狀態,當系統認爲 它是什麼用戶正在積極瞭解並因此當內存不足時,不是 候選人。 (它仍然是理論上 可能的服務要在極端的內存壓力 從目前的前臺應用程序打死,但在實踐中,這應該 不算是個問題。)