For bullet one and two, you are right that service is the best approach. In particular, IntentService is good for handling jobs one after another that were sent from another location.
If your service should only support a live thread, which itself processes the message / queue processing (as I understand it, a bullet), a regular service may suffice.
For bullet three, it depends on whether these updates should be performed until your application is noticeably active for the user. If so, use the service as well.
By the way: a thread is not tied to a specific activity or service, but to a process. If this process contains a running service, then all threads in it are also supported (except for the process, which must be killed due to special circumstances).
source share