A Service is an application component representing either an application's desire to perform a longer-running operation while not interacting with the user or to supply functionality for other applications to use.
Fragments can be used without defining a user interface. It is recommended to use headless fragments for your background processing.
What is the difference here?
Service
s are given higher priority than Activity
s at the process-level. When memory is low, the Android system will prioritize Service
s over Activity
s, making Service
s the ideal option for long-running tasks. See the article titled Processes and Threads for more information.
Also, when you state the following in your original post:
Fragments can be used without defining a user interface. It is recommended to use headless fragments for your background processing.
Where are you quoting this from? I agree with the first sentence, but the second sentence is too general. For short-running tasks (such as performing HTTP requests, etc.), headless fragments work fine. However, for performing long-running background processing (such as downloading a very large file, etc.) a headless fragment may not be what you want. For example, if you used a headless fragment to perform a long-running task and the user clicked the "back button", this will cause both the Activity
and its headless Fragment
to be destroyed.
To summarize, a service is a background component that exists independent of an Activity
, meaning that it can continue to run in the background even if the Activity
which started the service is destroyed. On the other hand, a headless fragment will always have an associated parent Activity
. If the Activity
that hosts the fragment is destroyed by the system, then the fragment will have to be killed as well.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With