I have a service that is downloading a file. When the download is done, I would like to update my "Downloaded files" list in my Activity
, but only if the Activity
is running. I do not want the Activity
to start if it's not already running.
I was hoping I could do this by making a new Intent
with some special flag.
Anyone have any idea how I can achieve this? A tiny code example maybe?
The good way to do this is to bind your "Downloaded files" activity to the service. When you bind the service, in the function onServiceConnected, register a Binder callback. Then, whenever you have new data available, service just calls that callback. If the activity is not running, the callback list at the service side will be empty, so it will not inform your activity.
For an example of this approach, take a look at RemoteService.java in Android SDK:
samples\ApiDemos\src\com\example\android\apis\app\
You can create new BroadcastReceiver instance and do something along these lines on your Activity's onResume() method:
After that, override myReceiver's onReceive() method to call a function that updates the component you want:
On your Activity's onPause() method, just unregister the receiver:
I hope that this would help you, feel free to ask if there is something unclear.