I'm looking for the best implementation pattern in Android to update a list when one of the elements change in a different activity.

Imagine this user journey:

> 
> An async process fetches ten (10) contact profiles from a web server. These are placed in an array and an adapter is notified. The ten (10) contact profiles are now displayed in a list.
> 
> 
> The user clicks on contact profile five (5). It opens up an activity with details of this contact profile. The user decides they like it and clicks 'add to favourite'. This triggers an async request to the web server that the user has favourited contact profile five (5).
> 
> 
> The user clicks back. They are now presented again with the list. The problem is the list is outdated now and doesn't show that profile five (5) is favourited.
> 
> 
> 

Do you:

* Async call the web server for the updated data and notify the adapter to refresh the entire list. This seems inefficient as the call for the list can take a couple of seconds.
* On favouriting the profile store the object somewhere (perhaps in a singleton service) marked for 'refresh'. OnResume in the List activity do you sniff the variable and update just that element in the list.
* Ensure the list array is static available. Update the array from the detail activity. OnResume in the activity always notify the adapter for a refresh.
* Ensure the list array and adapter is static available. Update the array and notify the adapter from the detail activity.

Any other options? What is the best design principle for this?