Android 自 Android P (API 28) 起,Studio Loader 已被弃用?

Android Studio Loaders have been deprecated as of Android P (API 28)?

我是 Android 的新人,我已经完成了一些 Android 应用程序开发课程,现在我正在尝试应用所学知识。我为此选择了一个新闻应用程序。它将从 5-10 个来源中提取新闻,并将它们显示在 recyclerview 中。

我发现我使用的课程材料已经过时了。我已经使用 AsynctaskLoader 来处理互联网连接问题,但现在在官方 Android 文档中它说 "Loaders have been deprecated as of Android P (API 28). The recommended option for dealing with loading data while handling the Activity and Fragment lifecycles is to use a combination of ViewModels and LiveData."

我的问题是我应该转换我的代码以符合 ViewModels 和 LiveData 还是 Asynctask 来处理我的任务(或任何其他建议)?正如我提到的,我只想从几个来源提取新闻数据并将它们显示在应用程序中。看来我不需要数据存储功能。但是,现在我添加了两个新闻源,应用程序似乎加载新闻数据有点晚。这种延迟是否与使用加载程序有关?使用视图模型会加速新闻加载任务吗(尤其是当有很多新闻源时)?

如果您已经使用 Loaders 编写了它,则没有理由急于更改它。弃用并不意味着消失。不,加载器不会增加显着的性能损失——任何性能问题都会出现在您应用程序的其他地方。

Loader 很好,因为它能够处理生命周期,但效率不如 LiveData 和 ViewModel。如果你关心性能,速度和最新,使用Android架构组件(LiveData,ViewModel),同样,你不必拘泥于旧的系统服务,你可以写一个简单的AsyncTask并包装它与 ViewModel 和 LiveData。它像魔术一样工作,比 Loaders 更好。有关如何在 LiveData 和 ViewModel 中包装 AsyncTask 的信息,请访问 https://medium.com/androiddevelopers/lifecycle-aware-data-loading-with-android-architecture-components-f95484159de4

从 Android P (API 28) 开始,加载程序已被弃用。在处理 Activity 和 Fragment 生命周期时处理加载数据的推荐选项是结合使用 ViewModel 和 LiveData。 ViewModels 像 Loaders 一样在配置更改后仍然存在,但样板文件更少。 LiveData 提供了一种生命周期感知方式来加载数据,您可以在多个 ViewModel 中重复使用这些数据。您还可以使用 MediatorLiveData 组合 LiveData,并且任何可观察的查询(例如来自 Room 数据库的查询)都可用于观察数据的变化。在您无权访问 LoaderManager 的情况下,例如在服务中,ViewModels 和 LiveData 也可用。串联使用这两者提供了一种访问应用程序所需数据的简便方法,而无需处理 UI 生命周期。