fel*_*rce 3 android kotlin kotlin-coroutines
当我将我的项目协程更新到较新版本时,我所有具有启动范围的作业创建都失败了......
在 gradle 上:
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.2'
Run Code Online (Sandbox Code Playgroud)
错误:
Type mismatch: inferred type is Job but CompletableJob was expected
Run Code Online (Sandbox Code Playgroud)
代码:
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")
}
}
Run Code Online (Sandbox Code Playgroud)
当job = scope.launch {
Android Studio 返回类型不匹配错误时,他希望是CompletableJob
,但我没有使用它,并且在旧版本中不存在。
Job()
实际上是一个返回 a 的工厂函数CompletableJob
。因此的类型private var job = Job()
是CompletableJob
。但是, for 的返回类型scope.launch
只是一个Job
. 您会收到错误消息,因为并非所有Job
实例都是CompletableJob
实例。
CompletableJob
您可以指定要使用的确切类型,而不是依赖类型推断(和自动分配的类型):
private var job: Job = Job()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
842 次 |
最近记录: |