首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CursorLoader与AsyncTaskLoader的区别

CursorLoader与AsyncTaskLoader的区别
EN

Stack Overflow用户
提问于 2015-02-25 03:32:30
回答 4查看 6K关注 0票数 18

为什么我要使用AsyncTaskLoader,,什么时候我应该更喜欢CursorLoader,反之亦然?

在正式的page中,展示了应用程序清单示例,它使用的是AsyncTaskLoader而不是CursorLoader。

这两者的优点和缺点是什么?我在某个地方读到了一些关于CursorLoader不关心内容更改的文章(在sqlite中)。

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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,该加载程序加载游标(通常在从数据库加载数据时使用)。

票数 23
EN

Stack Overflow用户

发布于 2016-02-18 01:43:08

值得注意的是,CursorLoaderAsyncTaskLoader<D>的一个具体实现。基本上,CursorLoader可以被认为是专门用于处理Cursor对象的AsyncTaskLoader

票数 4
EN

Stack Overflow用户

发布于 2015-02-25 04:13:52

AsyncTaskLoader是装载机的一个特殊子类,引起人们的兴趣。这个类执行与AsyncTask相同的功能,但更好一些。不过,使用AsyncTasks有几个问题:

配置更改会使事情变得一团糟,暂停一个活动不会暂停AsyncTask --相当数量的样板代码(这意味着更多可能的错误)

它可以更容易地处理活动配置更改,并且在片段和活动的生命周期内运行。令人高兴的是,AsyncTaskLoader可以在使用AsyncTask的任何情况下使用。当需要将数据加载到内存中以便处理活动/片段时,AsyncTaskLoader可以做得更好。

装载机的美妙之处在于它处理了在使用AsyncTask时通常会错过的一些“问题”。主要是处理活动配置更改(用户旋转屏幕时的IE)。

另一方面,当使用安卓内部的游标来提取数据时,CursorLoader确实会发光。每当底层数据更改时,Loader类在更新游标信息(以及相应的UI)方面做得很好。当信息经常发生变化时,这是非常有用的,而且您不想中断UI,以及用户当前正在做的任何事情,只是为了显示一些新的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28710633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档