簡體   English   中英

SharedPreferences在onResume()中未更新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM