gpt4 book ai didi

android - `pagingAdapter.submitData()`之后的代码没有执行

转载 作者:行者123 更新时间:2023-12-04 23:48:48 26 4
gpt4 key购买 nike

我正在使用 Kotlin flow 和 Android Paging 3 库编写一个玩具 Android 应用程序。该应用程序调用一些远程 API 来获取照片列表,并使用 RecyclerView 显示它们与 PagingDataAdapter .
我发现 pagingAdapter.submitData() 之后的代码不执行。
这是代码 fragment (此函数位于 Fragment 中):

  fun refreshList() {
lifecycleScope.launch {
photosViewModel.listPhotos().collect {
// `it` is PagingData<Photo>
pagingAdapter.submitData(it)
Log.e(TAG, "After submitData")
}
}
}
日志 After submitData不打印。
但是,如果我将日志记录放在 pagingAdapter.submitData() 前面行,它被打印出来,像这样:
  fun refreshList() {
lifecycleScope.launch {
photosViewModel.listPhotos().collect {
// `it` is PagingData<Photo>
Log.e(TAG, "Before submitData")
pagingAdapter.submitData(it)
}
}
}
日志 Before submitData打印没有问题。
请问为什么会出现这种情况?

最佳答案

.submitData是一个挂起函数,直到失效或刷新才返回。只要 Paging 正在从 PagingData 主动加载(收集)你提供,它不会完成。这就是为什么它必须在已启动的作业中完成。
出于同样的原因,请务必使用 collectLatest而不是 collect确保您取消并开始显示新的 generations尽早。

关于android - `pagingAdapter.submitData()`之后的代码没有执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65591102/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com