I am currently developing a application which is capable of locating nearby bus and train stops and display departure boards for the users.
I have a Activity, let us call it Activity1 that displays the 20 nearest stops.
When one of these are clicked, Activity2 is opened and the departure-board is loaded and shown.
In both cases, I am using AsyncTasks for data retrieval and parsing in background.
What I however would like to do is to load some of the departure boards in the background while showing the nearest stops. These would then be available as soon as the user decides to see one.
So I would like some kind of mechanism (Thread or Service) that runs parallel with the UI Thread and loads these data. The problem is that this mechanism should be accessibly from both the activities. What is the best approach to achieve this?
I thought about creating a static class SideLoader with a Runnable object and maybe a public list of loaded departure boards that is updated contentiously when this Runnable object are executed. Is this seam like a good practice or what?
You might also look at the following video from the Google I/O conference on doing REST queries asynchronously and storing the data locally for use. Excellent description of best practices that you may learn a lot from. Talks about services, asynctask, contentproviders, and more:
http://www.youtube.com/watch?v=xHXn3Kg2IQE
And to expound on that thought – You might use a ContentProvider to access the information stored in a SQLLite database on the device. Use a service to fetch the data online and store it in the database through the contentprovider. Your activities access the contentprovider to retrieve the data.