0

私のAndroidアプリケーションでは、ネットワーク関連のインテント(android.net.conn.CONNECTIVITY_CHANGE)をリッスンするブロードキャストレシーバがあります。 ネットワーク接続が変更されると、ブロードキャストレシーバーはインテントを受信し、新しい接続状態をサービスに渡す必要があります。このサービスは、デバイスの接続状態を追跡します。 次へ私は、デバイスとの接続状態を見つけるためにサービスと通信し、接続状態に基づいて何らかのアクションを実行する必要のあるアクティビティを持っています。 サービスを使用するブロードキャスト受信者との通信を処理し、次にサービスのアクティビティを処理する最善の方法は何でしょうか。Androidは、ブロードキャストレシーバとサービスとの通信を行い、アクティビティはサービスと通信します。

答えて

2

これを実行する方法はたくさんあり、「最良の方法」はありません。それは、これらのコンポーネント間で他にどのような通信が行われているかによって異なります。

Activityは、IntentstartService()に追加番号を使用してデータをServiceに送信できます。

ServiceIntentService

startActivity()上に補足を使用して、 Activityにデータを送信することができる放送 Intentに補足を使用して、任意のコンポーネントにデータを送信することができます。他のコンポーネント(アクティビティ、ブロードキャストレシーバなど)は、からのデータをリッスンするために BroadcastReceiverを登録できます。

ActivityActivityService用いたメソッド呼び出し(AIDL)との間の2方向通信を可能にするServiceに結合することができます。これらのメソッド呼び出しは、同期または非同期にすることができます。

コンポーネントがすべて同じプロセスで実行されている場合は、static変数に状態を格納し、そのようにデータを共有できます。

アプリケーション全体を見て、コンポーネント間を移動するために必要なデータを確認し、それらの要件を満たすメソッドを選択する必要があります。

関連する問題