Service | Thread | IntentService | AsyncTask | |
---|---|---|---|---|
When to use ? | Task with no UI, but shouldn't be too long. Use threads within service for long tasks. | - Long task in general. - For tasks in parallel use Multiple threads (traditional mechanisms) | - Long task usually with no communication to main thread. (Update)- If communication is required, can use main thread handler or broadcast intents[3] - When callbacks are needed (Intent triggered tasks). | - Long task having to communicate with main thread. - For tasks in parallel use multiple instances OR Executor [1] |
Trigger | Call to method onStartService() | Thread start() method | Intent | Call to method execute() |
Triggered From (thread) | Any thread | Any Thread | Main Thread (Intent is received on main thread and then worker thread is spawed) | Main Thread |
Runs On (thread) | Main Thread | Its own thread | Separate worker thread | Worker thread. However, Main thread methods may be invoked in between to publish progress. |
Limitations / Drawbacks | May block main thread | - Manual thread management - Code may become difficult to read | - Cannot run tasks in parallel. - Multiple intents are queued on the same worker thread. | - one instance can only be executed once (hence cannot run in a loop) [2] - Must be created and executed from the Main thread |
Tuesday, 5 March 2013
Android Threads comparision
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment