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 中,只存储需要的值:文本、可点击、可聚焦......你不需要存储整个对象。
我有一个要保存到 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 中,只存储需要的值:文本、可点击、可聚焦......你不需要存储整个对象。