在菲利普·拉克纳的一篇教程中,他正在进行网络通话和用户界面更改,如下所示:
lifecycleScope.launchWhenCreated {
binding.progressBar.isVisible = true
val response = try {
RetrofitInstance.api.getTodos()
} catch(e: IOException) {
Log.e(TAG, "IOException, you might not have internet connection")
binding.progressBar.isVisible = false
return@launchWhenCreated
} catch (e: HttpException) {
Log.e(TAG, "HttpException, unexpected response")
binding.progressBar.isVisible = false
return@launchWhenCreated
}
if(response.isSuccessful && response.body() != null) {
todoAdapter.todos = response.body()!!
} else {
Log.e(TAG, "Response not successful")
}
binding.progressBar.isVisible = false
}
默认情况下,lifecycleScope绑定到主线程,这意味着除非我们更改作用域,否则上述代码中的改进网络调用将在主线程上运行.
这一说法正确吗,如果不是为什么?