In case of Service
and IntentService
the main differences are Service
runs on the main thread while IntentService
is not, and
JobIntentService
is essentially a replacement for IntentService
, offering similar semantics in a way that "plays nice" with Android O's new background execution restrictions. It is implemented as a scheduled job on O+, but that's abstracted away -- your app doesn't need to care that it's a job.
Never schedule()
a job directly that you expect to use via the JobIntentService
support class. JobIntentService
uses the enqueue()
system in the job scheduler, and you cannot mix and match enqueue()
and schedule()
for the same job.