1

私のアプリでは、データをストリーミングするために 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));
        }
    };
4

0 に答える 0