我有一个我要保存到SharedPreferences的自定义View对象的ArrayList。 我使用Gson.toJson()来序列化对象,但每次调用该函数时,应用程序都会停止响应并且logcat无休止地写入数百种此类输出:
art﹕ Background sticky concurrent mark sweep GC freed 346250(10MB) AllocSpace objects, 185(4MB) LOS objects, 22% free, 27MB/35MB, paused 12.002ms total 112.210ms
即使我在MainActivity.java中尝试这样做以确保我的自定义View不是问题,问题也是一样的:
Gson gson = new Gson();
String parsedView = gson.toJson(new View(this));
但是当我尝试解析一个没有扩展View的对象时,它运行得很好。
答案 0 :(得分:0)
LogCat告诉你操作系统正在释放(大量)内存以进行解析。
我让你阅读View对象的结构:View object's source code
正如你所看到的,结构是巨大的!所以你的系统在这里做了很多工作!
您可以参考@Matt Ball评论:为什么要序列化COMPLETE View对象?如果要将其保存在SharedPreferences中,只存储所需的值:text,clickable,focusable,...您不需要存储整个对象。