【发布时间】:2012-08-28 19:07:02
【问题描述】:
我想在我的应用程序中使用BroadcastReceiver 作为AsyncTask 不同Activities 的结果指示符,因此也使用AsyncTasks。我认为我的方法有点错误,或者我错过了一些东西。
我在做什么:首先,在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 活动上下文的广播。但不知何故,A 活动的接收者仍然收到消息。两个接收者的内容相同,但名称不同。
所以这是我的问题:
- 我应该在
onPause方法上开始新活动时unregisterReceiver吗? -
BroadcastReceiver我是这样使用的吗,只打一个电话?每当我发送任何消息时,我都应该一次又一次地注册吗? - 我很确定我没有为
Manifest定义任何接收者。我想这是我做错了。如果这很好,我如何在发送广播时使用 IntentFilter?
如果有不确定的问题,请告诉我。任何有关 BroadcastReceiver 的线索都会非常有用。
【问题讨论】:
标签: android android-intent broadcastreceiver activity-lifecycle intentfilter