2016-05-12 3 views
1

私はAndroid上でWebクライアントを開発しています。私はIntentServiceをhttp-requestに使用します。その結果、オブジェクトは、プリミティブ型だけでなく、ビットマップオブジェクトフィールドなどのIntentServiceによって形成されます。アクティビティや他のクラスでオブジェクトを渡す最善の方法を教えてください。 私が使用ResultReceiverを試みるが、コールバックメソッドは、バンドル・オブジェクトを取得します:最良の方法は、AndroidのIntentServiceからビットマップを取得する

無効onReceiveResult(int型のresultCode、バンドルresultData)

バンドル・オブジェクトは単純型の格納に適しているだけです。大きなビットマップオブジェクトをバイト配列として変換することはお勧めできません。

Parcelにオブジェクトをパックし、Intentに設定する2番目のパス。その後、BroadcastReceiverを使用してキャッチします。ブロードキャストメッセージで大きなオブジェクトを送信するのはどうですか?

おそらく、イメージを保存してOutputStreamの方法で渡すことはできますか?あるいは、それを静的変数としてどこかに保存しますか?私はAndroidの専門家ではありません。私は速いアプリを手に入れたいと思っています。あなたの答えをありがとう!

+0

あなたはディスクにそれを保管して、それをあなたのアクティビティで読もうとしましたか? –

+0

私は最良の方法を見つけています。しかし、私はファイルとしてアンドロイドファイルシステムで書くことがあります – strevg

答えて

0

バンドルオブジェクトは、単純なタイプの格納にのみ適しています。大きなビットマップオブジェクトをバイト配列として変換することはお勧めできません。

はい、大きなデータは決してIntentで転送しないでください。それはデータ型ではなくサイズに関するものです。

2番目のパスは、Parcelにオブジェクトをパックし、Intentに設定します。その後、BroadcastReceiverを使用してキャッチします。ブロードキャストメッセージで大きなオブジェクトを送信するのはどうですか?

これは同じことですが、依然としてメッセージを送信するには制限があるIntentが必要です。

または静的変数として保存するだけですか?

これは機能しますが、これは悪いアーキテクチャです。これを行う場合は、いつもその静的フィールドについて考える必要がなくなり、常に不要なBitmapへの静的な参照を保持していないことを確認してください。私は強く推奨しません。

代わりにBitmapオブジェクトをディスクに保存し、Activityで読み取ることができます。ここに例があります:Save bitmap to location

関連する問題