2013-03-11 58 views
2

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

我有一个主要活动,其中列出了所有的警报。我有一个alarm_create活动,它会创建警报。 alarm_receiver当警报继续时,类名称为PendingIntent

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

为了保存报警,我使用了队列的概念,它可以帮助我检索循环中的报警。

请帮我解决这个问题。

+0

更新您尝试过的代码。 – 2013-03-11 08:17:13

+0

您是否在保存所有更改闹钟的活动的方法onPause中保存了闹钟? (请参阅活动生命周期:http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle) – Laviniux 2013-03-11 08:34:11

+0

显示您的代码。只是在不显示任何代码的情况下解释你正在尝试做什么并不能帮助任何人来帮助你。 – Squonk 2013-03-11 08:37:49

回答

0

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

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

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

我建议你去SQLiteDatabase类,并将报警存储在SQLite数据库中,因为每个Android设备都有SQLiteDatabase。您可以看到参考码here

0

下面是我们用来保存sharedPreferences

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

希望这有助于

+0

我有同样的问题。 – 2013-03-11 09:15:06

+1

我用上面的方法..但它不工作。 – 2013-03-11 09:15:27

+0

Joe2013 ..你的建议,我做了同样的事情,但我面临的问题是,当应用程序在更新值后返回到另一个活动时,该特定活动不会获取更新的SharedPreferences值。 :( – 2013-03-11 09:19:43

1

我不是很确定我明白你想要什么,但我的理解是你要设置的代码片段设备重新启动后再次发出警报。

1)创建一个侦听重启一个Reciever:

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

正是我正在寻找没有重新启动应用程序检索保存的SharedPrefences值。 – 2013-03-11 09:06:33

+0

thnx为此,我也在寻找这个 – 2013-03-11 09:09:12

+0

更新我的答案:)记得要editor.commit();并确保从相同的SharedPreferences(使用相同的名称)获取值(在main_activity中)。如果这没有帮助,你将不得不发布你的代码,所以我们可以弄清楚发生了什么事情。 – DecodeGnome 2013-03-11 11:07:39

相关问题