我想在我的应用程序中使用BroadcastReceiver
作为AsyncTask
结果指标,而不是Activities
,因此也AsyncTasks
。我认为我的做法没有错,或者我错过了什么。
我正在做的事情:首先,在onCreate
期间,我使用BroadcastReceiver
方法将我的接收器注册为registerReceiver
。我的接收器看起来像:
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活动的接收者仍在收到消息。两个接收器具有相同的内容,但名称不同。
所以这是我的问题:
unregisterReceiver
方法开始新活动时应该onPause
吗?BroadcastReceiver
我是如何使用的,仅用于一次通话?每当我发送任何消息时,我是否应该反复注册?Manifest
定义任何接收器。我想这就是我做错了。如果这很好,我怎样才能在发送广播时使用IntentFilter?如果有不确定的问题,请告诉我。关于BroadcastReceiver的任何线索都会很棒并且很有用。
答案 0 :(得分:2)
mContext.registerReceiver(iReceiver,new 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);