2012-04-15 1 views
1

サービスでXMLを取得し、そのXML文字列をAIDL経由で返したいとします。今日、私は、この文字列が非常に長い場合、呼び出し側のアプリケーションがnull値のみを受け取ることに気付きました。私はちょっと試してみたところ、文字列長の制限は約520000文字で、512 * 1024 = 524288に近いと思われます。 Javaは文字列をUTF-16として内部的に格納していますが、各文字は内部的(少なくとも2バイト)の大きさであるため、この制限は1MBになります。AIDLを介してサービスから大きな文字列を返すにはどうすればよいですか?

ここで、この制限がどこに文書化されているか、誰かが以前に問題があったかどうかを知りたいと思います。どのように私は簡単に大きな文字列を返すことができるか知っていますか?

答えて

1

ここで、この制限がどこに文書化されているか、誰かが以前に問題があったかどうかを知りたいと思います。

私の知る限りでは、それが正式に文書化されていませんが、IPCコールの内容に〜1MBの制限があり、どんなにそれが達成される方法(AIDLは、など、Intentをブロードキャスト)、またはどのようなデータがあります(文字列、ビットマップ、バイト配列の他の形式など)。

どのように私は簡単にこのような大きな文字列を返すことができます知っていますか?

ファイルを使用してください。必要に応じて、ContentProvideropenFile()でファイルを提供し、UriをAIDL応答のコンテンツに提供してください。

0

はい制限があります。

Stringを直接送信しないでください。これを行うには、SQLiteに格納し、文字列が必要な場所に戻してください。

関連する問題