ViewModel.kt
private val viewModelJob = Job()
private val defaultScope = CoroutineScope(Dispatchers.Default + viewModelJob)
fun sort() {
defaultScope.launch {
// sort logic (on tempList)
Log.d("my_tag", "Sort time: " + (System.currentTimeMillis() - sortStart))
withContext(Dispatchers.Main) {
Log.d("my_tag", "Updating sorted list")
sortedItemList.value = tempList
}
}
}
sortedItemList
是viewModel中的MutableLiveData,它在活动中被观察,该活动随后打印日志并使用该列表设置回收者视图。但是,每当我打开活动时,在设置回收者视图时都会看到80 - 300ms
的滞后,这非常明显。这是我的日志:
2020-06-13 14:46:41.031 22004-22066 D/my_tag: Sort time: 19
2020-06-13 14:46:41.324 22004-22004 D/my_tag: Updating sorted list
2020-06-13 14:46:41.324 22004-22004 D/my_tag: Observe sorted list
我认为这种滞后是因为Dispatchers.Main
仅由当时可能正在做其他事情的主线程组成。是不是而且,我应该如何消除这种滞后,或者对此有一个更快的解决方法?谢谢。