我不明白这两个API之间的区别,我的意思是什么时候使用第一个。为什么会有JobIntentService?
我不明白这两个API之间的区别,我的意思是什么时候使用第一个。为什么会有JobIntentService?
Service
、IntentService
、JobIntentService
时,它们看起来几乎相似——以某种方式在后台执行一些操作(用户不会注意到)。但它们运作方式上有一些不同。
Service - 这在调用此服务的同一主线程上运行,并执行某些后台操作。对于在主线程上发生的任何长时间运行的操作,建议创建一个新线程并通过不影响主线程性能的方式进行工作(例如:Handler
)。
缺点:在主线程上运行
IntentService - Intent服务也有助于执行一些长时间运行(无限期)的后台任务。唯一的区别是它创建一个新线程来执行此任务,而不是在主线程上运行。在其onHandleIntent
中执行给定的工作。
缺点:当应用程序被杀死时,分配给IntentService的工作将丢失
context.startForegroundService
显式地启动服务,而不是 context.startService
,并且当服务在 5 秒内启动时,必须将其绑定到通知以使其与 UI 元素相关联。两者都可以工作,但是JobIntentService与其他服务的唯一区别在于,如果应用程序在服务执行时被杀死,则JobIntentService会重新启动。而OnHandleWork()则在应用程序被杀死后重新启动。
IntentService
?我以为Google现在更倾向于推荐使用WorkManager... - IgorGanapolsky