java - 保存多个警报实例

标签 java android android-alarms

我有一个警报管理器,但我很难找到方法

A) store a unique ID for each pending intent alarm
B) a name to identify each alarm with and 
C) a number which represents an alarm sound to be used. 

我在这件事上使用了SharedPreferences,但它们只能执行一个警报实例,而我希望为多个警报实例存储此数据。即使应用程序关闭,我也需要保留这些数据,以便当用户再次打开应用程序时,可以看到已设置的闹钟的详细信息。

alarm1 -> 2431 -> 12
alarm2 -> 8412 -> 42
alarm3 -> 5425 -> 52

最佳答案

您始终可以使用 SQLlite 数据库来存储表中的值。另一方面,如果您坚持将其保存在 Shared Preference 中,则可以使用在 SharedPreference 中保存数组并从中加载数组,如下所示:

public String[] loadArray(String arrayName) {  
    SharedPreferences prefs = getSharedPreferences("preferencename", 0);  
    int size = prefs.getInt(arrayName + "_size", 0);  
    String array[] = new String[size];  
    for(int i=0;i<size;i++)  
        array[i] = prefs.getString(arrayName + "_" + i, null);  
    return array;  
}  

public boolean saveArray(String[] array, String arrayName) {   
    SharedPreferences prefs = getSharedPreferences("preferencename", 0);  
    SharedPreferences.Editor editor = prefs.edit();  
    editor.putInt(arrayName +"_size", array.length);  
    for(int i=0;i<array.length;i++)  
        editor.putString(arrayName + "_" + i, array[i]);  
    return editor.commit();  
}

因此,为了保存数组调用:

String [] alarmNames; // Load the array with values
saveArray(alarmNames, "nameOfAlarms");

String [] alarmIds; // Load the array with values
saveArray(alarmIds, "idOfAlarms");

String [] alarmSounds; // Load the array with values
saveArray(alarmSounds, "soundOfAlarms");

从共享首选项加载数组

String [] arrName = loadArray("nameOfAlarms");
String [] arrID = loadArray("idOfAlarms");
String [] arrSound = loadArray("soundOfAlarms");

参见How to properly use load array and save array methods?Save ArrayList to SharedPreferences了解更多。

希望这有帮助。

关于java - 保存多个警报实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17894407/

相关文章:

android - 有没有办法从文件选择器 Intent 中获取 Google 表格文件 ID?

java - getsupportActionBar().setDisplayHomeAsUpEnabled(true).setDisplayHomeAsUpEnabled(true) 抛出 NullPointerException

android - 即使应用程序已关闭,如何每天在特定时间显示通知?

java - 仅对某些 GSON 方法调用返回 JsonObject Null

java - 如何在运行时获取远程java类文件字节流?

java - 如何与共同的父实例跨多个实例共享数据?

java - 如何跟踪重复警报何时响起并更新设定值?

java - Android Studio mailto Intent 不显示主题和邮件正文

android - 如何将点击事件从 fragment 传递到容器 Activity ?

android - 如何在 Android 中取消正在进行的闹钟