[英]Unregister Broadcast Receiver using another Broadcast Receiver
我正在开发一个Android应用程序,其中在其中一项activity
注册了Broadcast Receiver
。
问题
假设活动名称为MyActivity
,而我在此活动中注册的Broadcast Receiver
为myReceiver
。
我想从另一个Broadcast Receiver
注销myReceiver
,将其secondReceiver
, onReceive
方法。 我有一个方法,让我们把它叫做myMethod
,要注销myReceiver
内myActivity
活动。
当我从secondReceiver
内部调用此myMethod
,我收到了IntentReceiverLeaked
异常。
题
如何从另一个Broadcast Receiver
注销Broadcast Receiver
Broadcast Receiver
?
运行来自另一个活动实例的myMethod
取消注册方法的一种方法是,使用自己的自定义操作在myActivity
上注册广播接收器,然后在onReceive
方法中调用myMethod
来取消注册接收者。 然后,当您要注销接收者时,只需声明声明的动作就可以发送广播 。 这样就不会因为不维护对myActivity
的引用而导致任何泄漏。
这是一个示范:
public class MyActivity extends AppCompatActivity {
private static final String ACTION_UNREGISTER = "com.yourDomain.subDomain.UNREGISTER_RECEIVER";
private BroadcastReceiver mUnregisteringReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
myMethod();
}
};
@Override
protected void onCreate(final Bundle savedInstanceState) {
...
registerReceiver(mUnregisteringReceiver, new IntentFilter(ACTION_UNREGISTER));
}
@Override
protected void onDestroy() {
...
unregisterReceiver(mUnregisteringReceiver);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.