我的应用程序从服务器接收一些 XML 格式的数据。我使用 XmlPullParser
解析它。一切正常。直到服务器发送大型嵌套对象 - 位图或 BASE64 编码的文件(最多 10+Mb)。在 VM 堆很少的旧设备上(例如 2.3),应用程序在 String text = parser.getText();
(内存不足)时崩溃
遇到这种情况怎么办?
有什么方法可以获取流吗?或者也许 XmlPullParser
可以拆分它并将它分成几部分给我?
最佳答案
一种可能是切换到Sax Parsing .主要区别在于它不需要一次将整个 xml 字符串读入内存。相反,它将以小块的方式通过它。
设置起来有点复杂,但如果您在线搜索“Android Sax 解析器示例”之类的内容,可以找到一些很好的示例来帮助您入门。这真的没有任何困难,只需要花点时间来习惯以这种方式而不是使用拉式解析器。
关于android - 接收大型 XML 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13955378/