當應用程序已經運行的最佳方式將存儲在像「IS_DATA_CLEARED」 SharedPreferences值或當您保存所需全部信息,始終確保此值永遠不會在任何時間內撥弄應用程序的生命週期。
SharedPreferences appSharedPrefs = PreferenceManager
.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = appSharedPrefs.edit();
editor.putBoolean("IS_DATA_CLEARED",false);
editor.apply();
然後每次都做下面的檢查。
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
boolean IS_DATA_CLEARED = appSharedPrefs.getBoolean("IS_DATA_CLEARED",true);
if(IS_DATA_CLEARED){
//DATA IS CLEARED
}
else{
//DATA IS NOT CLEARED
}
是的,我的假設也是一樣的,但我在三星Galaxy Tab中遇到了一個奇怪的問題:當任何鬧鐘來自服務器時,我的應用程序會捕獲它並開始播放wav文件以通知用戶,但同時如果用戶轉到應用程序的信息,然後單擊清除數據按鈕,它應該停止音頻軌道,但它不會發生,所以如果您的聲明是真實的服務也應該停止意味着onDestroy shud調用服務,其中音頻軌道停止,但它沒有發生在這種情況下。爲什麼? – piks
@piks:「它應該停止音頻軌道」 - 不一定。只要能夠訪問數據,它應該繼續播放。部分,這將是緩衝區的形式。如果文件被另一個進程打開,文件也可能不會被立即刪除,就像媒體播放的情況一樣。 – CommonsWare
但我只在裝有Android 2.2(Froyo)的設備上遇到此問題,如Samsung Galaxy標籤,如果我在其他版本的Android 2.1,2.3及更高版本中重複此方案,則單擊清除數據按鈕時會發出嘟嘟聲也正在停止。 – piks