2016-04-12 20 views
0

私は多くのIntentFilterを1つのBroadcastReceiverに登録し、以下のコードのように必須ではない場合はすべてIntentFilterの登録を解除します。androidのBroadcastReceiverから1つのIntentFilterを登録解除する

この時点で問題はうまくいきます。しかし今では、すべての代わりに単一のIntentFilterを登録解除する必要があります。

これはどのように達成できますか?

private void registerBroadcastReceiver() { 
     Log.i(TAG, LogHelper.at() + "Begin"); 

     LocalBroadcastManager 
       .getInstance(getActivity()) 
       .registerReceiver(broadcastReceiver, 
         new IntentFilter(getString(R.string.onInitiateCustomerVerificationSUCCESS))); 

     LocalBroadcastManager 
       .getInstance(getActivity()) 
       .registerReceiver(broadcastReceiver, 
         new IntentFilter(getString(R.string.onInitiateCustomerVerificationFAILURE))); 

     Log.i(TAG, LogHelper.at() + "End"); 
    } 

    private void unRegisterBroadcastReceiver() { 
     Log.i(TAG, LogHelper.at() + "Begin"); 

     LocalBroadcastManager 
       .getInstance(OkeKeyApplication.getAppContext()) 
       .unregisterReceiver(broadcastReceiver); 

     Log.i(TAG, LogHelper.at() + "End"); 
    } 

答えて

0

アクションを追加してIntentFilterを定義します。その後、レシーバを1回だけ登録することができます。

IntentFilter filter = new IntentFilter(); 
filter.addAction(getString(R.string.onInitiateCustomerVerificationSUCCESS)); 
filter.addAction(getString(R.string.onInitiateCustomerVerificationFAILURE)); 
LocalBroadcastManager.getInstance(getActivity()) 
    .registerReceiver(broadcastReceiver, filter); 

IntentFilterを変更するには、登録を解除して新しいIntentFilterで再度登録します。

0

そこには、このような方法はありませんが、あなたは、次のいずれかの方法に従うことができます -

  1. その特定IntentFilterに異なる受信機を登録し、いつでも好きなときにそれを登録解除。他の登録済みの受信者には影響しません。

  2. 受信者の登録を解除してから、同じ受信者を再度登録しますが、残りのIntentFiltersに対してのみ登録します。