AsyncTaskLoader与AsyncQueryHandler的对比

4

请问有人能告诉我AsyncTaskLoader和AsyncQueryHandler之间的区别吗?

我想在我的应用程序中使用AsynTaskLoader。现有的应用程序中使用的是AsyncQueryHandler。

我是否正确理解AsyncTaskLoader是AsyncQueryHandler的替代品?

如果我理解有误,请纠正我。我对Android非常陌生。

2个回答

7
如果你阅读文档: AsyncQueryHandler:
一个辅助类,用于更轻松地处理异步的ContentResolver查询。 AsyncTaskLoader:
提供了一个AsyncTask来完成工作的抽象Loader。有关更多详细信息,请参见Loader和LoaderManager。
所以它们是非常不同的。 AsyncQueryHandler 用于异步查询/插入到 ContentResolver 中,而 AsyncTaskLoader 是新的 Loader 机制(在API Level 11中引入),它使用 AsyncTask 来进行任何类型的后台处理(HTTP,SQL等)的实现。
你还应该看一下 CursorLoader,也许它是你需要的。
我认为如果您只想从ContentResolver中读取数据,应该使用CursorLoader,但是如果您想要对ContentResolver进行插入、删除等操作,也许最好使用AsyncQueryHandler

非常感谢您的回复... 那么您的意思是,如果我选择使用AsyncTaskLoader,就不需要使用CursorLoader了,对吗? - Ashokchakravarthi Nagarajan
嗯,使用其中一个即可,哪个更适合你就用哪个吧。在SO上,如果答案有用,我们会+1,可以跳过“谢谢”部分 :) - Ovidiu Latcu
@OvidiuLatcu 如果启动它们的活动被杀死或暂停,AsyncQueryHandler操作(CRUD)会发生什么?这些操作是否继续执行其工作或被杀死/取消?谢谢 - Axel

1

CursorLoaderAsyncTaskLoader 的子类。而 LoaderManager 和 CursorLoader 只提供了一种访问 ContentResolvers 上异步调用 query() 操作结果的方式。其他 ContentResolver 操作仍然是同步的。

但是,AsyncQueryHandler 异步调用所有 ContentResolver 调用。不仅包括查询,还包括插入、删除和更新。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接