2016-04-12 65 views
0

我正在註冊許多IntentFilter到一個BroadcastReceiver並取消註冊所有IntentFilter當這些不是必需的,如下面的代碼。取消註冊來自BroadcastReceiver的單一IntentFilter在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。

相關問題