Gson 解析没有响应

Gson parsing not responding

我有一个要保存到 SharedPreferences 的自定义视图对象的 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 中执行此操作以确保我的自定义视图不是问题,问题仍然存在:

Gson gson = new Gson();
String parsedView = gson.toJson(new View(this));

但是当我尝试解析一个不扩展 View 的对象时,它工作得很好。

LogCat 告诉您 OS 正在释放(大量)内存来进行解析。

我让您阅读 View 对象的结构:View object's source code

如您所见,结构非常庞大!所以你的系统在这里做了很多工作!

您可以参考@Matt Ball 的评论:为什么要序列化一个 COMPLETE View 对象?如果你想将它保存在 SharedPreferences 中,只存储需要的值:文本、可点击、可聚焦......你不需要存储整个对象。