-2

私は今私のアプリケーションでインテントサービスを使って放送受信機を使用していることを知りたいと思います。 1)私は放送受信機からデータを運びたくありません。私は別々にデータを運びたい。 私はアンドロイドで放送受信機を改善するためのアドバイスがあります。Androidブロードキャスト受信機とデータを分離する

+3

あなたが質問を言い換えるてくださいすることができ、それは –

+0

はあなたのコードをポストに理解することは非常に難しいです、私のコードで – Vyacheslav

+0

@TimCastelijns、 1)MainActivityコールIntentServiceデータベースからデータを取得し、活動にこの データをブロードキャストしてくださいています。 MainActivityのブロードキャスト受信者がこのデータを受信し、このデータを表示します。 –

答えて

0

コールバックを取得するためにBroadcastReceiverを使用しないようにしたいとしますが、その理由は言いません。いくつかの選択肢があります:

LocalBroadcastManager(あなたがまだいない場合)を使用できます。これにより、データがアプリケーションからブロードキャストされないことが保証されます(セキュリティおよびオーバーヘッドの問題)。これは通常のsendBroadcast()コールを使用するよりもやや軽量(パフォーマンスが向上)です。

IntentServiceからServiceに切り替えることができます。 ActivityからServiceまでのAIDLを使用して同期コールを定義できます。 ActivityServiceにバインドし、メソッド呼び出しの結果としてデータを返すServiceのメソッドを呼び出します。この場合、BroadcastReceiverの必要はありません。

あなたは(あなたのActivityonCreate()thisへの参照を設定する)あなたのActivityへの参照を保持しているpublic static変数をカンニングして使用することができます。 ServiceActivityにデータを送信したい場合は、Activityへの参照を使用し、その上の任意のメソッドを呼び出してデータを戻すことができます。この場合、BroadcastReceiverの必要はありません。これはハックです。これを使用する場合は、public static変数を確認してから、nullが使用されていないことを確認してください。また、ガベージコレクタはActivityの終了時にActivityのインスタンスを取り戻すことができないため、メモリリークが発生しますが、Androidは最終的にアプリケーションをホストするOSプロセスを終了させるため大したことではありません。私はそれについて心配しません。

関連する問題