Java store arraylist SharedReferences android

Java store arraylist SharedReferences android,java,android,arraylist,sharedpreferences,Java,Android,Arraylist,Sharedpreferences,在SharedReferences中存储包含太多项的String列表是一个好主意吗?这会影响应用程序的性能吗 我这样做是为了存储: public boolean saveArray(List<String> contacts) { SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(_context); SharedPreferences.Editor editor = sp.edi

SharedReferences
中存储包含太多项的
String
列表是一个好主意吗?这会影响应用程序的性能吗

我这样做是为了存储:

public boolean saveArray(List<String> contacts) {
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(_context);
    SharedPreferences.Editor editor = sp.edit();
    editor.putInt("Status_size", contacts.size());
    for (int i = 0; i < contacts.size(); i++) {
        editor.remove("Status_" + i);
        editor.putString("Status_" + i, contacts.get(i));
    }
    return editor.commit();
}
公共布尔存储阵列(列出联系人){
SharedReferences sp=PreferenceManager.GetDefaultSharedReferences(_上下文);
SharedReferences.Editor=sp.edit();
editor.putInt(“Status_size”,contacts.size());
对于(int i=0;i
并阅读:

public void loadArray(Context context) {
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
    _validContactsPhones.clear();
    int size = sharedPreferences.getInt("Status_size", 0);
    for (int i = 0; i < size; i++) {
        _validContactsPhones.add(sharedPreferences.getString("Status_" + i, null));
    }
}
公共void加载数组(上下文){
SharedReferences SharedReferences=PreferenceManager.GetDefaultSharedReferences(上下文);
_validContactsPhones.clear();
int size=SharedReferences.getInt(“状态大小”,0);
对于(int i=0;i
不,在
SharedReference
中存储大量类似
字符串的联系人列表不是一个好主意

应用程序中存储的
SharedReference
没有具体的大小限制,因为它存储在
/data/data/[package name]/shared\u prefs/[app name].xml中。由于SharedReference存储在XML文件中,因此缺少SQLite强大的事务支持。因此,我建议将此类数据存储在SQLite数据库中

另一件需要记住的事情是,我所知道的最小大小限制是您的可用堆空间量,因为SharedReferences将整个XML文件的内容读取到内存中


答案大多是抄袭的

您可以使用库保存自定义数组列表

1)首先需要创建函数,将数组列表保存到SharedReferences

public void saveArray(ArrayList<String> contacts) {

        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(_context);
        SharedPreferences.Editor editor = sp.edit();
        Gson gson = new Gson();
        String json = gson.toJson(contacts);
        editor.putString("Status_List", json);
        editor.apply(); 

    }
public void loadArray(Context context)
{
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
    _validContactsPhones.clear();
    Gson gson = new Gson();
    String json = prefs.getString("Status_List", "");
    Type type = new TypeToken<ArrayList<String>>() {}.getType();
    ArrayList<String> temp = gson.fromJson(json, type);
    _validContactsPhones.addAll(temp);
}
public void存储阵列(ArrayList联系人){
SharedReferences sp=PreferenceManager.GetDefaultSharedReferences(_上下文);
SharedReferences.Editor=sp.edit();
Gson Gson=新的Gson();
字符串json=gson.toJson(联系人);
putString(“状态列表”,json);
editor.apply();
}
2)您需要创建函数从SharedReferences获取数组列表

public void saveArray(ArrayList<String> contacts) {

        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(_context);
        SharedPreferences.Editor editor = sp.edit();
        Gson gson = new Gson();
        String json = gson.toJson(contacts);
        editor.putString("Status_List", json);
        editor.apply(); 

    }
public void loadArray(Context context)
{
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
    _validContactsPhones.clear();
    Gson gson = new Gson();
    String json = prefs.getString("Status_List", "");
    Type type = new TypeToken<ArrayList<String>>() {}.getType();
    ArrayList<String> temp = gson.fromJson(json, type);
    _validContactsPhones.addAll(temp);
}
公共void加载数组(上下文)
{
SharedReferences SharedReferences=PreferenceManager.GetDefaultSharedReferences(上下文);
_validContactsPhones.clear();
Gson Gson=新的Gson();
String json=prefs.getString(“Status_List”,”);
Type Type=new-TypeToken(){}.getType();
ArrayList temp=gson.fromJson(json,类型);
_有效的联系人地址(临时);
}

唯一的性能影响可能来自
editor.commit()。调用
editor.apply()