【问题标题】:SharedPreferences not updating in onResume()SharedPreferences 未在 onResume() 中更新
【发布时间】:2013-03-11 08:14:37
【问题描述】:

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

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

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

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

请帮我解决这个问题。

【问题讨论】:

标签: java android sharedpreferences android-alarms


【解决方案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" />

【讨论】:

  • 正是我正在寻找在不重新启动应用程序的情况下检索保存的 SharedPrefences 值。
  • 谢谢这个,我也在找这个
  • 更新了我的答案 :) 记得 editor.commit();并确保从相同的 SharedPreferences(使用相同的名称)获取值(在您的 main_activity 中)。如果这没有帮助,您将不得不发布您的代码,以便我们弄清楚发生了什么。
【解决方案2】:

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

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

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

我建议你去SQLiteDatabase Class,并将警报存储在 SQLite Database 中,因为每个 Android 设备都有 SQLiteDatabase。

可以看参考代码here。

【讨论】:

    【解决方案3】:

    下面是我们用来保存sharedPreferences的代码sn-p

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

    希望对你有帮助

    【讨论】:

    • 我也有同样的问题。
    • Joe2013 .. 你建议的方式,我做了同样的事情,但我面临的问题是当应用程序在更新值后返回另一个活动时,该特定活动没有得到更新的 SharedPreferences价值观。 :(
    猜你喜欢
    • 2012-09-19
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多