I want to use BroadcastReceiver
in my application as AsyncTask
result indicator in different Activities
and therefore AsyncTasks
too. I think my approach is little wrong or I missed something.
Here what I'm doing: Firstly, during onCreate
I registered my receiver as a BroadcastReceiver
using the registerReceiver
method. My receiver looks like:
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);
}
}
In my application, I've A and B activities. Each have different receivers which getting messages from different tasks. By the way, I must clarify that, A activity starting B activity.
I'm using receiver which in activity A, then activity A starting B using the startActivity
. In activity B, I'm executing an AsyncTask
and on onPostExecute
I'm sending a broadcast with B activity's context. But somehow still A activity's receiver getting message. Both receivers have the same content but have different names.
So here are my issues:
unregisterReceiver
when I started new activity on onPause
method?BroadcastReceiver
that how I'm using, only for one call? Should I register again and again whenever I send any message?Manifest
. I suppose this is what I'm doing wrong. If this is well, how can I use IntentFilter while sending broadcast?Please let me know if there is uncertain question. Any clues about BroadcastReceiver would be great and appriciated.
mContext.registerReceiver(iReceiver, new android.content.IntentFilter("android.intent.action.BATTERY_CHANGED"));
Where iReceiver is ,
iReceiver = new IntentReceiver();
private class IntentReceiver extends BroadcastReceiver {
private final String LOG_TAG="IntentReceiver";
@Override
public void onReceive(Context arg0, Intent intent) {
}
}
and unregister the same on OnPause
mContext.unregisterReceiver(iReceiver);