Reputation: 3412
Basically, there is a Google way, which suggests using Service
for long running operations (which I use at the time). On the other hand, there are a lot of examples in community by honored developers, which avoid using Service
and at most incorporate Fragment
's setRetainInstance(boolean retain)
.
While Google has declared that a lot of bad stuff might happen if we don't use a Service
, I still feel anxious because there are, it seems, so many projects leaving Service
aside.
Can you consolidate the Google's case or provide suggestions for abandoning Service
?
P.S. I'm developing "classic" rest-client applications.
P.S.S. I forgot to mention that Service
is used in pair with ContentProvider
(for cachging purposes, guard against system app forceshutdowns).
Thanks.
Upvotes: 0
Views: 51
Reputation: 1006914
If the network request is very likely to take under a second, or if you don't mind it if your process terminates before the request completes, using simple threading from the UI layer is fine, IMHO.
But once the user leaves your app (HOME, responds to an incoming call, etc.), the lifetime of your process is limited, and it could be very short if you do not have a service to tell the OS that you're still doing important work for the user.
So, if the network request is more in the 1-15 second range, and you'd like to feel fairly confident that the work will run to completion, use an IntentService
or something along those lines.
If the network request is likely to be longer than that, such as a large download, now you have to worry about the device going to sleep and such. My WakefulIntentService
was designed for this sort of scenario, where it will keep the device awake long enough to get the work done, then let the device go back asleep.
Some developers use services for all significant network I/O, skipping them only for truly ephemeral stuff like thumbnail images to populate a ListView
or RecyclerView
. So long as the service is only running when it is actively delivering value to the user, this is perfectly fine.
Upvotes: 2