在 android 中从 BroadcastReceiver 注销单个 IntentFilter
Unregistering single IntentFilter from BroadcastReceiver in android
我正在将许多 IntentFilter
注册到一个 BroadcastReceiver
并注销所有 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");
}
没有这样的方法,但您可以按照以下方式之一进行 -
为那个特定的 IntentFilter 注册一个不同的接收器,并在需要时注销它。不会影响其他注册的接收者。
注销接收器,然后同时再次注册同一个接收器,但仅限于其余的 IntentFilters。
通过添加操作来定义 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 重新注册。
我正在将许多 IntentFilter
注册到一个 BroadcastReceiver
并注销所有 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");
}
没有这样的方法,但您可以按照以下方式之一进行 -
为那个特定的 IntentFilter 注册一个不同的接收器,并在需要时注销它。不会影响其他注册的接收者。
注销接收器,然后同时再次注册同一个接收器,但仅限于其余的 IntentFilters。
通过添加操作来定义 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 重新注册。