3

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

我有一个主要活动,其中列出了所有警报。我有一个alarm_create创建警报的活动。当闹钟响起时alarm_receiver调用类。PendingIntent

现在即使alarm_receiver在警报中进行了更改,也不会反映在main_activity应用程序恢复时。

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

请帮我解决这个问题。

4

3 回答 3

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" />
于 2013-03-11T08:41:33.150 回答
0

下面是我们用来保存 sharedPreferences 的代码片段

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

希望这可以帮助

于 2013-03-11T08:37:43.440 回答
0

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

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

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

我建议你去SQLiteDatabase上课,并将警报存储在 SQLite 数据库中,因为每个 Android 设备都有 SQLiteDatabase。

您可以在此处查看参考代码。

于 2013-03-13T17:30:01.180 回答