【发布时间】:2019-02-28 08:10:22
【问题描述】:
我是 Android 新手,我已经完成了一些 Android 应用程序开发课程,现在我正在尝试应用我所学的知识。我为它选择了一个新闻应用程序。它将从 5-10 个来源中提取新闻并将其显示在 recyclerview 中。
我意识到我使用的课程材料已经过时。我使用 AsynctaskLoader 来处理互联网连接问题,但现在在官方 Android 文档中它说 “自 Android P (API 28) 起,加载器已被弃用。在处理 Activity 和 Fragment 生命周期时处理加载数据的推荐选项是使用 ViewModel 和 LiveData 的组合。”
我的问题是我应该转换我的代码以符合 ViewModels 和 LiveData 还是 Asynctask 处理我的任务(或任何其他建议)?正如我提到的,我只想从几个来源中提取新闻数据并将它们显示在应用程序中。看来我不需要数据存储功能。但是,目前我已经添加了两个新闻源,并且该应用程序似乎加载新闻数据有点晚。这种延迟是否与使用加载器有关?使用视图模型会加速新闻加载任务(尤其是当有很多新闻源时)?
【问题讨论】:
-
请注意,只有框架Loaders被弃用,支持库版本的Loaders没有被弃用。
-
@ianhanniballake 支持库的源代码中的文档明确表示“已弃用”drive.google.com/file/d/1WqhpZbZUSDlQNb1SZNVmfPbIW7Y31QZy/…
-
@Raykud - 这是因为您应该按照actual source code 使用LoaderManager.getInstance(),而不是支持库加载器已被弃用。
-
@ianhanniballake 所以它没有记录。我相信它应该用注释“see”或使用新方法的参考来正确记录,比如使用支持方法的原生片段。
-
@Raykud - 根据源代码,肯定有一个指向新类的链接,所以这看起来像是 developer.android.com 上文档的显示问题 - 它看起来确实显示正确在androidx FragmentActivity documentation
标签: android android-asynctask loader android-viewmodel