Android:使用SharedPreference导致内存泄漏

时间:2011-11-24 13:04:36

标签: android sql memory-leaks sharedpreferences

我们的应用程序使用SharedPreference来保存数据。该应用程序从服务器接收大约1.5Mb的数据。

解析数据后,我将其存储在SharedPreference中。但是保存操作导致堆上大约2mb的Hashmaps(我使用内存分析器工具检查)。那么sharedPrefs使用Heap(我不这么认为)或内部存储时,编辑器是不是清除Map Object数据字符串? (在Memory Analyzer上,数据显示为HashMap,GC根到SharedPrefs和android.app.ContextImpl(android中的内部或内部类))

另外,哪种方式更好,使用sqlite或SharedPref?因为使用sharedPref,应用程序正在快速而精细地工作。我唯一的问题是这个内存泄漏。

1 个答案:

答案 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();
        }
    }
}