我们的应用程序使用SharedPreference来保存数据。该应用程序从服务器接收大约1.5Mb的数据。
解析数据后,我将其存储在SharedPreference中。但是保存操作导致堆上大约2mb的Hashmaps(我使用内存分析器工具检查)。那么sharedPrefs使用Heap(我不这么认为)或内部存储时,编辑器是不是清除Map Object数据字符串? (在Memory Analyzer上,数据显示为HashMap,GC根到SharedPrefs和android.app.ContextImpl(android中的内部或内部类))
另外,哪种方式更好,使用sqlite或SharedPref?因为使用sharedPref,应用程序正在快速而精细地工作。我唯一的问题是这个内存泄漏。
答案 0 :(得分:0)
好吧,如果有多个条目,你可以将它存储到私人文件中并使用分隔符或其他东西。
但是,如果你有很多条目,最好的办法就是使用数据库。
下面的代码会将字符串保存到文件中:
public static void WriteSettings(Context context, String data,String filename) {
FileOutputStream fOut = null;
OutputStreamWriter osw = null;
try {
fOut = context.openFileOutput(filename, Context.MODE_PRIVATE);
osw = new OutputStreamWriter(fOut);
osw.write(data);
osw.flush();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
osw.close();
fOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}