我是Android的新手,我已经完成了一些Android应用程序开发课程,现在我正在尝试应用我所学到的东西。我为此选择了一个新闻应用程序。它将从5-10源中提取新闻,并在回收视图中显示它们。
我意识到我所用的教材已经过时了。我曾使用AsynctaskLoader来处理互联网连接问题,但现在在官方的安卓文档中,它说“从安卓P (API 28)开始,装载机就被废弃了。在处理活动和碎片生命周期时,处理加载数据的推荐选项是使用ViewModels和LiveData的组合。”
我的问题是,我应该转换我的代码以符合ViewModels和LiveData,还是由同步任务来处理我的任务(或任何其他建议)?正如我提到的,我只想从几个源中提取新闻数据,并在应用程序中显示它们。看来我不需要数据存储功能。但是,现在我增加了两个新闻来源,这个应用程序似乎加载新闻数据有点晚。这个延迟是否与使用加载程序有关?使用视图模型是否会加快新闻加载任务(特别是在有大量新闻来源时)?
发布于 2018-09-25 00:12:47
加载器是很好的,因为它具有处理生命周期的能力,但它的效率不如LiveData和ViewModel。如果您关心性能、速度和最新情况,请使用Architecture组件( LiveData,ViewModel),而且,您不必坚持旧的做事系统,您可以编写一个简单的AsyncTask,并将其与ViewModel和LiveData包装。它像魔法一样工作,比装载机更好。有关如何将AsyncTask包装为LiveData和ViewModel的信息,请访问https://medium.com/androiddevelopers/lifecycle-aware-data-loading-with-android-architecture-components-f95484159de4
发布于 2018-09-24 19:04:11
如果你已经用装载机写了它,就没有理由急于改变它了。不赞成并不意味着消失。不,装载机不会增加很大的性能损失--任何额外的问题都会出现在你的应用程序的其他地方。
发布于 2019-02-24 08:21:15
从Android (API 28)开始,加载器就被废弃了。在处理活动和片段生命周期时处理加载数据的建议选项是使用ViewModels和LiveData的组合。ViewModels在像装载机这样的配置变化中幸存下来,但使用的样板较少。LiveData提供了一种生命周期感知的加载数据的方式,可以在多个ViewModels中重用。您还可以使用LiveData组合MediatorLiveData,并且任何可观察到的查询(例如来自Room数据库的查询)都可以用于观察数据的更改。ViewModels和LiveData在您无法访问LoaderManager的情况下也是可用的,例如在服务中。同时使用这两种方式可以方便地访问应用程序所需的数据,而无需处理UI生命周期。
https://stackoverflow.com/questions/52485689
复制相似问题