Java SharedReference更新信息

Java SharedReference更新信息,java,android,sharedpreferences,Java,Android,Sharedpreferences,我使用SharedReference来跟踪所使用的字符、字符带来的点以及用户拥有的字符数,最后两个字符被连接在一个字符串中,我附加split以获得其中一个值(稍后再附加)。然而,我并不确定我试图更新数据的方式是如何进行的。如果能听到一些意见,我将不胜感激。 下面是我保存共享首选项的代码: SharedPreferences aSharedPref = getSharedPreferences(Aprefs, Context.MODE_PRIVATE); int[] aData =

我使用SharedReference来跟踪所使用的字符、字符带来的点以及用户拥有的字符数,最后两个字符被连接在一个字符串中,我附加split以获得其中一个值(稍后再附加)。然而,我并不确定我试图更新数据的方式是如何进行的。如果能听到一些意见,我将不胜感激。 下面是我保存共享首选项的代码:

    SharedPreferences aSharedPref = getSharedPreferences(Aprefs, Context.MODE_PRIVATE);
    int[] aData = new int[2];
    aData[0] = 3;
    aData[1] = 0;
    StringBuilder strA = new StringBuilder();
    for (int i = 0; i < aData.length; i++) {
        strA.append(aData[i]).append(",");
    }
    aSharedPref.edit().putString("A", strA.toString());
    aSharedPref.edit().apply();`
SharedPreferences aSharedPref=getSharedPreferences(Aprefs,Context.MODE\u PRIVATE);
int[]aData=新int[2];
aData[0]=3;
aData[1]=0;
StringBuilder strA=新的StringBuilder();
for(int i=0;i
我在哪里检索并更新它:

    SharedPreferences aSharedPref = getSharedPreferences(Aprefs, Context.MODE_PRIVATE);
    String dataA = aSharedPref.getString("A", "");
    StringTokenizer stA = new StringTokenizer(dataA, ",");
    int[] listA = new int[2];
    for (int i = 0; i < 2; i++) {
        listA[i] = Integer.parseInt(stA.nextToken());
    }
    listA[1] = listA[1] + 1;
    StringBuilder strA = new StringBuilder();
    for (int i = 0; i < listA.length; i++) {
        strA.append(listA[i]).append(",");
    }
    aSharedPref.edit().putString("A", strA.toString());
    aSharedPref.edit().apply();
SharedPreferences aSharedPref=getSharedPreferences(Aprefs,Context.MODE\u PRIVATE);
stringdataa=aSharedPref.getString(“A”,”);
StringTokenizer stA=新的StringTokenizer(dataA,“,”);
int[]listA=新的int[2];
对于(int i=0;i<2;i++){
listA[i]=Integer.parseInt(stA.nextToken());
}
listA[1]=listA[1]+1;
StringBuilder strA=新的StringBuilder();
for(int i=0;i

还有一个关于apply()和commit()的问题,从我收集的内容来看,commit会在apply在后台处理数据时立即将数据写入持久性存储。那么,在保存我计划在整个应用程序中更新的数据时,我使用哪一个会很重要。

您确定要这样使用SharedRef吗?它更多的是用来跟踪从一个会话持续到另一个会话的数据。考虑到这一点,你应该使用静态字段或任何类似的方法来跟踪你的数据,然后只在应用程序即将关闭时保存数据。顺便说一句,GetDefaultSharedReferences
与GetSharedReferences
不一样。我试着改用SQLite,但老实说,它确实让我很困惑,所以我改用SharedReference,因为我不会以这种方式保存大量数据,我认为它可能足够好,但我真的不确定。。。在您看来,不断编辑数据是否可能损坏数据或导致错误计算?