私は、サーバーからフェッチされたデータを表示するアクティビティを持っています。接続が利用できない場合、アクティビティにはキャッシュされたデータが表示されます。接続が利用可能な場合、アクティビティはデータをフェッチして表示します。それはすべて期待通りに機能します。
ここでは、接続が行われるとすぐに自分のアクティビティでデータをリロードするようにしたいと考えています。私は、受信機を登録し、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を自分のアクティビティのプライベートクラスとして宣言する必要がありますか?それとも他の解決策がありますか?
接続を認識したいアクティビティ内のConnectionChangeReceiverクラスをonRecieve内に作成し、接続信号を受け取った後にUIパーツを更新します。 – sat