繁体   English   中英

使用其他广播接收器注销广播接收器

[英]Unregister Broadcast Receiver using another Broadcast Receiver

我正在开发一个Android应用程序,其中在其中一项activity注册了Broadcast Receiver

问题

假设活动名称为MyActivity ,而我在此活动中注册的Broadcast ReceivermyReceiver

我想从另一个Broadcast Receiver注销myReceiver ,将其secondReceiveronReceive方法。 我有一个方法,让我们把它叫做myMethod ,要注销myReceivermyActivity活动。

当我从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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM