2011-07-30 23 views
5

私は、サーバーからフェッチされたデータを表示するアクティビティを持っています。接続が利用できない場合、アクティビティにはキャッシュされたデータが表示されます。接続が利用可能な場合、アクティビティはデータをフェッチして表示します。それはすべて期待通りに機能します。
ここでは、接続が行われるとすぐに自分のアクティビティでデータをリロードするようにしたいと考えています。私は、受信機を登録し、androidはアクティビティとブロードキャスト受信者の間で通信します

私の活動で
<receiver android:name=".ConnectionChangeReceiver" 
      android:label="NetworkConnection"> 
     <intent-filter> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 
     </intent-filter> 
</receiver> 

次のように

public class ConnectionChangeReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     ConnectivityManager connectivityManager = (ConnectivityManager) context 
       .getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); 
     if (activeNetInfo != null) { 
      //what to do here? 
     } 
    } 
} 

放送受信機は、私のマニフェストファイルで宣言されています。私は、BroadcastReceiverを拡張し、簡単なレシーバーを使用しています

ConnectionChangeReceiverレシーバ=新しいConnectionChangeReceiver(); this.registerReceiver(受信者、 新しいIntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));

今、私は次の作業として混乱しています。 onReceiveメソッドが実行されると、そのアクティビティにどのように認識されますか?私は新しい活動を始めることができると知っていますが、それは本当に私が望むものではありません。 ConnectionChangeReceiverを自分のアクティビティのプライベートクラスとして宣言する必要がありますか?それとも他の解決策がありますか?

+1

接続を認識したいアクティビティ内のConnectionChangeReceiverクラスをonRecieve内に作成し、接続信号を受け取った後にUIパーツを更新します。 – sat

答えて

11

あなたのアクティビティのプライベートサブクラスとしてレシーバを構築することは、ここに行く方法だと思います。この方法で、あなたの活動からイベントやデータをコントロールすることができます。次に、あなたはそれの1つのインスタンスを作成し、上記のようにコードからレシーバを登録することができます。

マニフェストとコードの両方にレシーバを登録する必要はありません。これらのうちの1つは厳しいです - マニフェストは基本的に "静的な"登録ですが、コードで実行すると実行時に動的な登録が可能になります。また、マニフェストに登録すると、受信者の新しいインスタンスが自動的にシステムから作成され、実行され、終了します。コードでregを実行すると、特定のインスタンスを指すことができます。

+0

清算に感謝します。 – Maggie

+0

+1ご清聴ありがとうございます。 – AgentKnopf

+0

しかし、もし私が放送受信機を活動に入れたくないのであれば、それは何か?これを行う他の方法.. .. ?? –

関連する問題