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.
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.
I would look at building an Android Service to manage your background tasks. Each activity could bind to the service and communicate with it as needed.
http://developer.android.com/reference/android/app/Service.html
精彩评论