[英]SharedPreferences not updating in onResume()
我是Android編程的新手,我正在嘗試開發一個用於設置警報的應用。 由於AlarmManager
將在系統重新啟動時丟失所有警報,因此我使用SharedPreferences
保存了用戶創建的所有警報。
我有一個主要活動,其中列出了所有警報。 我有一個創建警報的alarm_create
活動。 alarm_receiver
警報時, alarm_receiver
類稱為PendingIntent
。
現在,即使alarm_receiver
更改了警報,當應用程序恢復時,它也不會反映在main_activity
。
為了保存警報,我使用了隊列的概念,這將有助於我循環檢索警報。
請幫我解決這個問題。
我不太確定我確切地了解您想要什么,但是據我了解,您想在重啟設備后再次設置警報。
1)創建一個監聽重啟的接收器:
public class BootReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences settings = context.getSharedPreferences("YOUR SHAREDPREF NAME", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("alarmName", "newAlarm");
editor.commit(); // Don't forget to commit your changes!
}
}
2)將其添加到您的androidmanifest.xml中:
<receiver android:name="com.yourpackage.BootReciever">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
3)添加權限:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
以下是我們用於保存sharedPreferences的代碼段
Editor prefsEditor = preferences.edit();
prefsEditor.putString(CONFIG_INFO_KEY, configInfoJson);
prefsEditor.commit();
希望這可以幫助
實際上,SharedPreferences不會立即更新,而是在應用程序重新啟動時得到更新。
不幸的是,重新啟動應用程序在Android中編寫代碼並不容易,並且超出了您應用程序的范圍。
以上由DecodeGnome提供的答案可用於重新聲明列表或重新加載應用程序的警報。
我建議您使用SQLiteDatabase
類,並將警報存儲在SQLite數據庫中,因為每個Android設備都具有SQLiteDatabase。
您可以在此處查看參考代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.