2017-01-25 11 views
0

、私は私がプログラムCONNECTIVITY_ACTIONレシーバを登録する必要があることを知っている登録、およびないマニフェストCONNECTIVITY_ACTION受信機は、私はそれがAndroidの7で

に受信機が、私はそれを登録した瞬間に消えた瞬間に消灯します。それをどうやって防ぐのですか?私のアプリケーションクラスで

私はこれを行う:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 
     IntentFilter filter = new IntentFilter(); 
     filter.addAction(android.net.ConnectivityManager.CONNECTIVITY_ACTION); 
     registerReceiver(new NetworkUpdateReceiver(), filter); 
    } 

、その後onReceive方法がすぐに呼び出されます。それは正常に動作

public class NetworkUpdateReceiver extends BroadcastReceiver { 

    private Context context; 


    @Override 
    public void onReceive(Context context, Intent intent) { 
     this.context = context; 
     Log.e("NetworkUpdateReceiver", "onReceive"); 

その後 - 私は、メソッド呼び出しを毎回取得しますネットワークがオンまたはオフになっている

+1

これはたぶん粘着的な放送でしょう。あなたはあまりそれについて行うことはできません。 – CommonsWare

+1

好奇心の外に、すぐに発射することの問題は何ですか?あなたのハンドラが何をしていても、それが今か遅いかにかかわらず同じイベントを処理しているはずです。それはあなたがそれでやっていることであれば、前後にトグルするだけでは簡単ではありません。 –

+0

問題は、ネットワークが利用可能になったときにアプリが一連のイベントを実行することです。これは後でOKですが、アプリがメモリにロードされるたびに繰り返されるわけではありません。回避策ロジックを実装するのではなく、毎回オフにならないようにする方が簡単だったようでした –

答えて

1

BroadcastReceiver.javaにはisInitialStickyBroadcast()メソッドがあり、igあなたはそのようなコードを書くことができる受信機を登録するときに接続が変わる:

関連する問題