【问题标题】:Should I use a Loader for each http connection or a single Loader for all it enough?我应该为每个 http 连接使用一个加载器还是一个加载器就足够了?
【发布时间】:2018-09-28 18:33:07
【问题描述】:

我是 Android 新手,正在尝试制作一个简单的新闻提要应用程序。我正在使用 Asynctaskloader 进行后台操作。目前,我使用单个加载器来连接不同的新闻源。我的问题是我应该为每个新闻源定义和运行不同的加载器还是一个加载器也可以处理它?我问是因为当应用打开时,加载新闻需要 5-10 秒(到目前为止我只添加了三个新闻源),所以可能是因为使用了单个加载器吗?

【问题讨论】:

    标签: android android-studio asynctaskloader


    【解决方案1】:

    使用单个加载器的loadInBackground 方法来访问不同的数据源的问题在于,这种访问将在关联线程中是顺序的。从 N 个来源获取和返回新闻的总时间将是每个来源时间的总和,包括延迟或超时,假设您等到所有内容都下载完毕才能继续进行演示。

    您应该考虑更多线程/加载器或其他策略(可能获取 1、显示 1、获取 2、添加 2 等),这样用户不会因等待而感到沮丧。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-26
        • 1970-01-01
        • 1970-01-01
        • 2014-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-25
        相关资源
        最近更新 更多