我正在使用SharedPreferences
來存儲我的數據。當我的應用程序正在運行時,數據已成功保存到SharedPreferences
,但是當我關閉我的應用程序並嘗試通過Intent Service
保存數據時,什麼也沒有發生。沒有保存到該數據:在應用程序未運行時將數據保存在SharedPreferences中
public class TinyDB {
private SharedPreferences preferences;
private String DEFAULT_APP_IMAGEDATA_DIRECTORY;
private String lastImagePath = "";
public TinyDB(Context appContext) {
preferences = PreferenceManager.getDefaultSharedPreferences(appContext);
}
public void putString(String key, String value) {
checkForNullKey(key); checkForNullValue(value);
preferences.edit().putString(key, value).apply();
}
}
我使用它的對象onMessageReceive()
public void onMessageReceived(RemoteMessage remoteMessage) {
tinyDb.putString("key","value");
}
主要的一點,我要確保我要保存的值時,應用程序沒有運行。當應用程序運行時,一切都很好。
我也想知道什麼類或活動是最好的初始化TinyDB的對象,我應該使它靜態或不?
您的意思是您正在嘗試在應用程序關閉時將密鑰保存到sharedPrefs。如果這是真的,那麼在調用putString方法時,需要確保tinyDB的資源仍然存在(由於原始上下文丟失,優選實例可能不起作用)。 –
是的,我知道,那就是我想知道的問題的答案 –
你究竟在'SharedPreferences'上調用'apply()'或'commit()'在哪裏? – Darwind