EDITED Corrected code examples for registering/unregistering the BroadcastReceiver
and also removed manifest declaration.
Define ReceiveMessages
as an inner class within the Activity
which needs to listen for messages from the Service
.
Then, declare class variables such as…
ReceiveMessages myReceiver = null;
Boolean myReceiverIsRegistered = false;
In onCreate()
use myReceiver = new ReceiveMessages();
Then in onResume()
…
if (!myReceiverIsRegistered) {
registerReceiver(myReceiver, new IntentFilter("com.mycompany.myapp.SOME_MESSAGE"));
myReceiverIsRegistered = true;
}
…and in onPause()
…
if (myReceiverIsRegistered) {
unregisterReceiver(myReceiver);
myReceiverIsRegistered = false;
}
In the Service
create and broadcast the Intent
…
Intent i = new Intent("com.mycompany.myapp.SOME_MESSAGE");
sendBroadcast(i);
And that’s about it. Make the ‘action’ unique to your package / app, i.e., com.mycompany...
as in my example. This helps avoiding a situation where other apps or system components might attempt to process it.