1

私のアプリケーションは、サーバーからXML形式でデータを受け取ります。を使用して解析しXmlPullParserます。すべてが正常に動作します。サーバーが大きなネストされたオブジェクト(BASE64エンコーディング(最大10 + Mb)のビットマップまたはファイル)を送信するまで。VMヒープがほとんどない古いデバイス(たとえば2.3)では、アプリケーションがString text = parser.getText();(メモリ不足で)クラッシュします

この場合はどうすればよいですか?

ストリームを取得する方法はありますか?または、mabeyXmlPullParserはそれを分割して、パーツごとに私に渡すことができますか?

4

1 に答える 1

1

1 つの可能性は、Sax Parsingに切り替えることです。主な違いは、xml 文字列全体を一度にメモリに読み込む必要がないことです。代わりに、小さな塊でそれを通り抜けます。

セットアップはもう少し複雑ですが、「Android Sax Parsers example」などをオンラインで検索すると、開始するのに適したサンプルがいくつかあります。プル パーサーを使用する代わりに、その方法で行うことに慣れるのに少し時間がかかるだけで、それほど難しいことではありません。

于 2012-12-19T15:23:27.043 に答える