如何取消 JobIntentService
How to cancel a JobIntentService
如何取消 JobIntentService?我在文档中看不到这样做的方法,除了 JobSheduler
API 和 Context#stopService(...)
方法,我不确定这是否是正确的方法。
在 Android 8.0 之前,JobIntentService
作为 IntentService
实现。在其 onHandleIntent
方法完成前一个请求之前,IntentService
不会通过某些意图操作停止或接受任何其他请求。
stopService
() 在任务 finished.And 之前不会被调用,它会在任务完成时自动调用。这是 IntentService
的一个特性,但是这里已经回答了一个类似的问题,指的是 IntentServices
,希望它能有所帮助。
answered question
JobIntentService
只是将 IntentService
带到了 Android 8+,后者对后台服务更加严格。它在具有旧版本 Android 的设备上运行起来像旧的 IntentService
s。
IntentService
从未设计为可取消,因此缺少任何 API 来取消 JobIntentService
.
因此,JobIntenService
只能用于不需要取消的工作。请注意,JobIntentService
仍然可以用于工作可能 失败 ,并因此被中止。
可以取消的工作应在以下任一时间执行:
- 一份
Activity
(或其 ViewModel
)的短期工作
- 一个 JobService(如果 minSdk 为 21,则使用 Firebase Job Dispatcher 或 Job Scheduler)
- 自定义前台服务
如何取消 JobIntentService?我在文档中看不到这样做的方法,除了 JobSheduler
API 和 Context#stopService(...)
方法,我不确定这是否是正确的方法。
在 Android 8.0 之前,JobIntentService
作为 IntentService
实现。在其 onHandleIntent
方法完成前一个请求之前,IntentService
不会通过某些意图操作停止或接受任何其他请求。
stopService
() 在任务 finished.And 之前不会被调用,它会在任务完成时自动调用。这是 IntentService
的一个特性,但是这里已经回答了一个类似的问题,指的是 IntentServices
,希望它能有所帮助。
answered question
JobIntentService
只是将 IntentService
带到了 Android 8+,后者对后台服务更加严格。它在具有旧版本 Android 的设备上运行起来像旧的 IntentService
s。
IntentService
从未设计为可取消,因此缺少任何 API 来取消 JobIntentService
.
因此,JobIntenService
只能用于不需要取消的工作。请注意,JobIntentService
仍然可以用于工作可能 失败 ,并因此被中止。
可以取消的工作应在以下任一时间执行:
- 一份
Activity
(或其ViewModel
)的短期工作 - 一个 JobService(如果 minSdk 为 21,则使用 Firebase Job Dispatcher 或 Job Scheduler)
- 自定义前台服务