我是Android的新手,我已经完成了一些Android应用程序开发课程,现在我正尝试应用所学知识。我为此选择了一个新闻应用程序。它将从5-10个来源中提取新闻,并将其显示在recyclerview中。
我认识到我使用的课程材料已经过时。我已经使用AsynctaskLoader处理互联网连接问题,但是现在在官方的Android文档中,它说“从Android P(API 28)开始不推荐使用加载器。推荐的选项是在处理Activity和Fragment生命周期时处理加载数据是结合使用ViewModels和LiveData。”
我的问题是我应该转换代码以符合ViewModels和LiveData还是Asynctask处理我的任务(或任何其他建议)?正如我提到的,我只想从几个来源中提取新闻数据并将其显示在应用程序中。似乎我不需要数据存储功能。但是,到目前为止,我添加了两个新闻源,该应用似乎加载新闻数据的时间有点晚。这种延迟与使用加载程序有关吗?使用视图模型是否可以加快新闻加载任务(尤其是在新闻源很多的情况下)?
答案 0 :(得分:4)
如果您已经使用Loaders编写过,则没有理由急于更改它。弃用并不意味着消失。不会,Loader不会增加明显的性能损失-任何性能问题都会出现在您应用程序的其他地方。
答案 1 :(得分:2)
加载程序之所以出色,是因为它能够处理生命周期,但效率不如LiveData和ViewModel。如果您关心性能,速度和最新信息,则可以使用Android体系结构组件(LiveData,ViewModel),也不必使用旧的服务器系统,可以编写一个简单的AsyncTask并将其与ViewModel和LiveData。它像魔术一样工作,并且比装载机更好。有关如何在LiveData和ViewModel中包装AsyncTask的信息,请访问https://medium.com/androiddevelopers/lifecycle-aware-data-loading-with-android-architecture-components-f95484159de4
答案 2 :(得分:0)
从Android P(API 28)开始不推荐使用加载程序。建议在处理活动和片段生命周期时处理加载数据的选项是结合使用ViewModels和LiveData。 ViewModels能够像Loader这样的配置更改得以保留,但样板更少。 LiveData提供了一种生命周期感知的方式加载数据,您可以在多个ViewModel中重用。您还可以使用MediatorLiveData组合LiveData,并且可以使用任何可观察到的查询(例如来自Room数据库的查询)来观察数据的变化。在无法访问LoaderManager的情况下(例如在Service中),ViewModels和LiveData也可用。串联使用两者提供了一种简便的方法,无需处理UI生命周期即可访问应用程序所需的数据。