2016-04-12 2 views
0

Я регистрирую много IntentFilter до одного BroadcastReceiver и отменяя регистрацию всех IntentFilter, когда они не требуются, как в коде ниже.Unregistering single IntentFilter от BroadcastReceiver in android

Вещь хорошо работает в этом пункте. Но теперь мне нужно отменить регистрацию одного 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, добавив действия. Затем вы можете зарегистрировать приемник только один раз.

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.