私のアプリでは、データをストリーミングするために 1 つの TCP 接続を維持しています。次のシナリオを実装したいと思います。
ネットワークの変更をリッスンする必要があるため、ネットワークが切断された場合は、ユーザーに通知する必要があります。ネットワークが再び来たら、自動的に接続してストリーミングを開始する必要があります。もう 1 つの制約: アプリが一時停止状態の場合、ストリーミングを開始しないでください。これを実装するために、BaseActivity で CONNECTIVITY_ACTION のレシーバーを登録し、onPause() で同じように unregisterReceiver を登録しました。
このコードを実行すると、onResume() が無限に呼び出されます。何が悪かったのか?私を助けてください。
前もって感謝します!
@Override
protected void onResume() {
System.out.println("onResume() in BaseActivity");
registerReceiver(connectivityReceiver, new IntentFilter(
ConnectivityManager.CONNECTIVITY_ACTION));
super.onResume();
}
そして onPause() で
@Override
protected void onPause() {
System.out.println("onPause() in BaseActivity");
unregisterReceiver(this.connectivityReceiver);
super.onPause();
}
これが私のBroadcastReceiverです
private BroadcastReceiver connectivityReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
BaseActivity.this.connectionChange(netCheckerHelper(context));
}
};