Android 关于使用广播接收机的几个问题

Android 关于使用广播接收机的几个问题,android,android-intent,broadcastreceiver,activity-lifecycle,intentfilter,Android,Android Intent,Broadcastreceiver,Activity Lifecycle,Intentfilter,我想在我的应用程序中将BroadcastReceiver用作不同活动中的AsyncTask结果指示器,因此AsyncTask也是如此。我认为我的方法有点错误,或者我遗漏了什么 这里我要做的是:首先,在onCreate期间,我使用registerReceiver方法将我的接收器注册为BroadcastReceiver。我的接收器看起来像: protected BroadcastReceiver myReceiver = new BroadcastReceiver() { @Override

我想在我的应用程序中将
BroadcastReceiver
用作不同
活动中的
AsyncTask
结果指示器,因此
AsyncTask
也是如此。我认为我的方法有点错误,或者我遗漏了什么

这里我要做的是:首先,在
onCreate
期间,我使用
registerReceiver
方法将我的接收器注册为
BroadcastReceiver
。我的接收器看起来像:

protected BroadcastReceiver myReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String msg_for_me = intent.getStringExtra("some_msg");
        Log.i("Tutorial", msg_for_me);
    }
}
在我的应用程序中,我有A和B活动。每个都有不同的接收者,从不同的任务中获取消息。顺便说一下,我必须澄清,A活动开始B活动

我正在使用活动A中的接收器,然后活动A使用
startActivity
启动B。在活动B中,我正在执行一个
AsyncTask
,并在
onPostExecute
上发送一个包含B活动上下文的广播。但不知何故,活动的接收者仍在接收信息。两个接收者的内容相同,但名称不同

以下是我的问题:

  • 当我在
    onPause
    方法上启动新活动时,是否应该
    unregisterReceiver
  • BroadcastReceiver
    我是这样使用的,只用于一次通话吗?当我发送任何消息时,我是否应该一次又一次地注册
  • 我很确定我没有为清单定义任何接收者。我想这就是我做错的地方。如果情况良好,在发送广播时如何使用IntentFilter
如果有不确定的问题,请告诉我。关于广播接收器的任何线索都将是非常好的

  • 是的,您应该在活动暂停时注销广播接收器。信息技术 是潜在的泄漏
  • 无广播接收器不适用于一次呼叫。 每次为注册用户进行广播时,都会调用它们 意图
  • 您可以注册特定目的的接收器 像这样,
  • registerReceiver(iReceiver,新的android.content.IntentFilter(“android.intent.action.BATTERY_CHANGED”)

    在iReceiver所在的地方

     iReceiver = new IntentReceiver();
    
    private class IntentReceiver extends BroadcastReceiver {
        private final String LOG_TAG="IntentReceiver";
    
        @Override
        public void onReceive(Context arg0, Intent intent) {
    
        }
     }
    
    并在OnPause上注销相同的

    mContext.unregisterReceiver(iReceiver);
    

    谢谢你的回答,但B活动的接收器仍然工作不好。即使我使用B活动的上下文发送广播,活动的接收者也会收到消息。你有什么建议吗?顺便说一下,这是我的主要问题。一旦有人解决了这个问题,我就会接受。你能用活动A和B中的代码编辑你的问题吗?我可以在这方面多帮点忙。复仇女神,再次谢谢你。我自己也发现自己错了。不需要再更新了。