Java 保存多个报警实例

Java 保存多个报警实例,java,android,android-alarms,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. 我使用的是SharedReferences,但它们只能执行一个报警实例,我希望为多个报警实例存储此数据。即使在应用程序关闭时,我也需要保留这些数据,以便

我有一个闹钟管理器,我很难想出一个解决方法

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. 
我使用的是
SharedReferences
,但它们只能执行一个报警实例,我希望为多个报警实例存储此数据。即使在应用程序关闭时,我也需要保留这些数据,以便当用户再次打开应用程序时,可以看到已设置警报的详细信息

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

您可以始终使用SQLlite数据库在表中存储值。另一方面,如果您坚持将其保存在共享首选项中,则可以使用“在SharedReference中保存数组”并按如下方式从中加载数组:

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 [] arrName = loadArray("nameOfAlarms");
String [] arrID = loadArray("idOfAlarms");
String [] arrSound = loadArray("soundOfAlarms");
更多信息,请参阅和


希望这有帮助

谢谢你的提示,我会调查一下,看看我是怎么做的。但是,在您看来,在这个解决方案中使用SQLite会更好吗?是的,您可以创建一个包含三列的表。我使用SQLite来组织数据。但另一方面,SharedReference的速度更快。我试图实现一种删除首选项的方法,但在执行此操作时遇到了一些问题。如果问题与此特定问题无关,请发布一个新的问题并在此处评论链接。根据我的能力,我非常乐意帮助你。
String [] arrName = loadArray("nameOfAlarms");
String [] arrID = loadArray("idOfAlarms");
String [] arrSound = loadArray("soundOfAlarms");