为什么我要使用AsyncTaskLoader,,什么时候我应该更喜欢CursorLoader,反之亦然?
在正式的page中,展示了应用程序清单示例,它使用的是AsyncTaskLoader而不是CursorLoader。
这两者的优点和缺点是什么?我在某个地方读到了一些关于CursorLoader不关心内容更改的文章(在sqlite中)。
谢谢!
发布于 2015-06-19 07:52:30
AsyncTaskLoader是一个抽象的加载器,它提供了一个AsyncTask来执行work.So --通常扩展AsyncTaskLoader来创建您自己的自定义loader.The --使用AsyncTask和使用AsyncTaskloader之间的关键区别是,配置更改(例如方向更改)不会影响AsyncTaskLoader及其进程,因为AsyncTaskLoader有自己的生命周期;而配置更改会对AsyncTask产生不利影响,因为它与宿主活动的生命周期相连接。
CursorLoader是一个加载程序,它查询ContentResolver并返回一个Cursor.This类,以标准的方式实现loader协议,用于查询cursors.It只不过是一个AsyncTaskLoader。
简而言之,当您必须通过扩展AsyncTaskLoader D> where D="anything_you_want_to_load“来创建自定义加载器时,您可以使用D=。当您必须实现加载器时使用CursorLoader,该加载程序加载游标(通常在从数据库加载数据时使用)。
发布于 2016-02-18 01:43:08
值得注意的是,CursorLoader是AsyncTaskLoader<D>的一个具体实现。基本上,CursorLoader可以被认为是专门用于处理Cursor对象的AsyncTaskLoader。
发布于 2015-02-25 04:13:52
AsyncTaskLoader是装载机的一个特殊子类,引起人们的兴趣。这个类执行与AsyncTask相同的功能,但更好一些。不过,使用AsyncTasks有几个问题:
配置更改会使事情变得一团糟,暂停一个活动不会暂停AsyncTask --相当数量的样板代码(这意味着更多可能的错误)
它可以更容易地处理活动配置更改,并且在片段和活动的生命周期内运行。令人高兴的是,AsyncTaskLoader可以在使用AsyncTask的任何情况下使用。当需要将数据加载到内存中以便处理活动/片段时,AsyncTaskLoader可以做得更好。
装载机的美妙之处在于它处理了在使用AsyncTask时通常会错过的一些“问题”。主要是处理活动配置更改(用户旋转屏幕时的IE)。
另一方面,当使用安卓内部的游标来提取数据时,CursorLoader确实会发光。每当底层数据更改时,Loader类在更新游标信息(以及相应的UI)方面做得很好。当信息经常发生变化时,这是非常有用的,而且您不想中断UI,以及用户当前正在做的任何事情,只是为了显示一些新的信息。
https://stackoverflow.com/questions/28710633
复制相似问题