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()
。