我的应用程序以 XML 格式从服务器接收一些数据。我使用XmlPullParser
. 一切正常。直到服务器以 BASE64 编码(最多 10+Mb)发送大型嵌套对象 - 位图或文件。在虚拟机堆很小的旧设备上(例如 2.3)应用程序崩溃String text = parser.getText();
(内存不足)
在这种情况下我该怎么办?
有什么方法可以获取流吗?或者mabeyXmlPullParser
可以把它分开并分部分给我?
我的应用程序以 XML 格式从服务器接收一些数据。我使用XmlPullParser
. 一切正常。直到服务器以 BASE64 编码(最多 10+Mb)发送大型嵌套对象 - 位图或文件。在虚拟机堆很小的旧设备上(例如 2.3)应用程序崩溃String text = parser.getText();
(内存不足)
在这种情况下我该怎么办?
有什么方法可以获取流吗?或者mabeyXmlPullParser
可以把它分开并分部分给我?
一种可能是切换到Sax Parsing。主要区别在于它不需要一次将整个 xml 字符串读入内存。相反,它将以小块的方式通过它。
设置起来有点复杂,但如果你在网上搜索“Android Sax Parsers example”之类的东西,有一些很好的示例可以帮助你入门。这真的不再困难,只需花一点时间来习惯这样做,而不是使用拉式解析器。