Q)Explain Service vs intent service ?
q) Difference between 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
- When callbacks are needed (Intent triggered tasks).
|- Long task having to communicate with main thread.|
- For tasks in parallel use multiple instances OR Executor
|Trigger||Call to method|
|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.|
|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)|
- Must be created and executed from the Main thread