android - 在 JobIntentService 中将 setInterruptIfStopped 设置为 true 有什么意义?
问题描述
JobIntentService 有一个setInterruptIfStopped
方法,当设置为 时,如果作业停止true
,则导致当前运行:AsyncTask
cancel
void setInterruptIfStopped(布尔型中断IfStopped)
如果作业停止,控制在 onHandleWork(Intent) 中执行的代码是否会被中断。默认情况下这是错误的。如果调用并设置为 true,则任何时候调用 onStopCurrentWork(),该类都会首先调用 AsyncTask.cancel(true) 来中断正在运行的任务。
https://developer.android.com/reference/android/support/v4/app/JobIntentService
但是,这实际上并不会中断onHandleWork
. 相反,这只是boolean
在AsyncTask
to中设置 a true
,我需要检查它onHandleWork
以手动中断我的工作。
public final boolean isCancelled()
如果此任务在正常完成之前被取消,则返回 true。如果您在任务上调用 cancel(boolean),则应定期从 doInBackground(Object[]) 检查此方法返回的值,以尽快结束任务。
https://developer.android.com/reference/android/os/AsyncTask
但是为此我们已经有了JobIntentService
'isStopped
方法:
布尔 isStopped ()
如果 onStopCurrentWork() 已被调用,则返回 true。您可以在执行工作时使用它来查看是否应该停止它。
据我了解,我们甚至无法访问AsyncTask
'isCancelled
方法。那么 in 有什么用setInterruptIfStopped
呢JobIntentService
?
解决方案
推荐阅读
- c - BFS 算法返回分段错误
- node.js - 在发送邮件之前等待文件创建
- jenkins-pipeline - Jenkins 脚本化管道
- r-markdown - render() 与 word_document 的 Knit GUI
- java-8 - CompletableFuture List 等待所有未来的问题
- javascript - 在传单 OSM 上的附近搜索
- scala - Scala、cats、http4s - 无法识别来自 Http4s 的 <+> 符号
- python - 如何使用正则表达式从字符串末尾删除可能重复的模式?
- r - R:转置两列数据表
- ios - iOS Swift - 滚动时如何向上移动搜索栏?