2017-01-31 87 views
0

我的Android應用程序啓動一個本地前臺服務(與我的活動在同一個進程中)。服務必須保持活力,即使系統由於內存不足而破壞活動。Android服務重啓後丟失靜態數據

下次用戶啓動應用程序時,我需要檢查服務是否正在運行。 我試圖在public static boolean Started = false;旗服務類中存儲狀態(我知道這是不好的做法)。

我的活動在服務運行的過程中開始。我想,這個靜態構造函數被稱爲ones。所以,我可以在活動中檢查這個標誌。但是,靜態數據將重新初始化爲默認值。

任何人都可以告訴我這種行爲嗎?

+0

的罰款,如果重新啓動服務,如果應用程序來前景? –

+0

我使用意圖服務,所以每次應用程序前景我停止然後開始服務 –

+0

我寫了一些答案,很容易爲您複製它 –

回答

0

這裏只是一個例子,我如何重新啓動該服務時,應用程序可以在服務來forground

public void storeLastLocation() { 
    if (!isStoreLocationActive){ 
     Log.d("IQ MA", "storeLastLocation() called"); 

     String access_token = Configs.access_token; 
     Intent intent = new Intent(MainActivity.this, StoreLocationService.class); 
     intent.putExtra("access_token", access_token); 
     stopService(intent); 
     startService(intent); 

     isStoreLocationActive = true; 
    } 
} 

然後存儲布爾運行