在onResume()中不更新SharedPreferences

时间:2013-03-11 08:14:37

标签: java android sharedpreferences android-alarms

我是Android编程新手,我正在尝试开发一个用于设置闹钟的应用。由于AlarmManager将丢失系统重启时的所有警报,因此我使用SharedPreferences保存了用户创建的所有警报。

我有一个主要活动,其中列出了所有警报。我有一个alarm_create活动,可以创建警报。当闹钟响起时,alarm_receiver类被称为PendingIntent

现在,即使alarm_receiver在闹钟中进行了更改,当应用程序恢复时,main_activity也不会反映出来。

为了保存闹钟,我使用了队列的概念,这将帮助我循环检索警报。

请帮我解决这个问题。

3 个答案:

答案 0 :(得分:1)

我不太确定我到底知道你想要什么,但据我所知,你想在设备重启后再次设置闹钟。

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" />

答案 1 :(得分:0)

以下是我们用于保存sharedPreferences的代码段

 Editor prefsEditor = preferences.edit();
prefsEditor.putString(CONFIG_INFO_KEY, configInfoJson);
prefsEditor.commit();

希望这有帮助

答案 2 :(得分:0)

实际上,SharedPreferences不会立即更新,它会在重新启动应用程序时更新。

不幸的是,在Android中重新启动应用程序并不容易,并且超出了应用程序的范围。

DecodeGnome的上述答案可用于重新列出列表或重新加载应用程序的警报。

我建议您选择SQLiteDatabase Class,并将警报存储在SQLite数据库中,因为每个Android设备都有SQLiteDatabase。

您可以看到参考代码here