作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我将我的项目协程更新到较新版本时,我所有具有启动范围的作业创建都失败了......
在渐变上:
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.2'
错误:
Type mismatch: inferred type is Job but CompletableJob was expected
代码:
var websiteCrawlerResultList: ArrayList<WebsiteCrawlerResult> = arrayListOf()
var url: URL? = null
private var urlList: MutableSet<String> = mutableSetOf()
private var job = Job()
private var scope = CoroutineScope(Dispatchers.Default+job)
fun startCrawler() {
job = scope.launch {
crawlPageLinks(url)
Log.d(TAG, "Finished ${url.toString()} crawling")
}
}
当 job = scope.launch {
Android Studio 返回类型不匹配错误时,他期望是 CompletableJob
,但我没有使用它并且这个不存在于旧版本。
最佳答案
Job()
实际上是一个返回 CompletableJob
的工厂函数。因此 private var job = Job()
的类型是 CompletableJob
。但是,scope.launch
的返回类型只是一个Job
。您收到错误是因为并非所有 Job
实例都是 CompletableJob
实例。
您可以指定要使用的确切类型,而不是依赖类型推断(以及自动分配的 CompletableJob
类型):
private var job: Job = Job()
关于Android协程作业更改为CompletableJob?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59150471/
我是一名优秀的程序员,十分优秀!