[Android Pro] AsyncTaskLoader vs AsyncTask

简介:

reference to : http://blog.csdn.net/a910626/article/details/45599133

我看了一下asyncTask是从LV3开始,AsyncTaskLoader是从LV11开始的。 
是不是说LV11以后,AsyncTaskLoader可以替代AsyncTask了? 
还有,在Android开发里,异步加载的方法很多,普遍流行和最常用的是那种方法? 
是不是如果想带有进度展示的话,那AsyncTask是首选?

复制代码
在statckOverflow里查了一下,说是 AsyncTaskLoader不需要写代码来处理activiy 配置(系统字体大小,orientation,输入设备类型等都叫做activity的配置)变化带来的影响,
但是缺点是加载时候不能解散掉进度框,不能 在onLoadFinished时切换fragment.单纯的从load data角度考虑,AsyncTaskLoader更合适。 If you need UI changes after data is loaded
- AsyncTask might server you better, especially if you are working with fragments, but remember to handle activity configuration changes. 意思是说,你向数据加载完成之后ui改变,异步任务更适合,但是你需要写代码去处理activity的配置改变带来的影响。 AsyncTaskLoader是基于AsyncTask的 AsyncTaskLoader有一个优点,他不仅可以异步(通俗理解就是又开了一个线程而已),并且当他检测到数据的变化时会自动加载
复制代码

google文档中关于Loader的说法: 
Introduced in Android 3.0, loaders make it easy to asynchronously load data in an activity or fragment. Loaders have these characteristics: 
1、They are available to every Activity and Fragment. //支持Activity和Fragment 
2、They provide asynchronous loading of data. //异步加载(就是异步任务来完成的) 
3、They monitor the source of their data and deliver new results when the content changes. //当数据源改变时能及时通知客户端(自己特有的) 
4、They automatically reconnect to the last loader’s cursor when being recreated after a configuration change. Thus, they don’t need to re-query their data. //发生configuration change时自动重连接(自己特有的)

 

 

Loader由什么组成?

 

  总共有四个特性最终决定了一个Loader的行为:

  • 执行异步载入的任务。为了确保在一个独立线程中执行载入操作,Loader的子类必须继承AsyncTaskLoader而不是 Loader类。AsyncTaskLoader是一个抽象Loader,它提供了一个AsyncTask来做它的执行操作。当定义子类时,通过实现抽象 方法loadInBackground方法来实现异步task。该方法将在一个工作线程中执行数据加载操作。

  • 在一个注册监听器中接收载入完成返回的结果(见附注1)。对于每个Loader来说,LoaderManager注册一个 OnLoadCompleteListener,该对象将通过调用onLoadFinished(Loader loader, D result)方法使Loader将结果传送给客户端。Loader通过调用Loader#deliverResult(D result),将结果传递给已注册的监听器们。

  • 三种不同状态(见附注2)。任何Loader将处于三种状态之中,已启动、已停止、重启: 
    a. 处于已启动状态的Loader会执行载入操作,并在任何时间将结果传递到监听器中。已启动的Loader将会监听数据改变,当检测到改变时执行新的载入。 一旦启动,Loader将一直处在已启动状态,一直到转换到已停止和重启。这是唯一一种onLoadFinished永远不会调用的状态。 
    b. 处于已停止状态的Loader将会继续监听数据改变,但是不会将结果返回给客户端。在已停止状态,Loader可能被启动或者重启。 
    c. 当Loader处于重启状态时,将不会执行新的载入操作,也不会发送新的结果集,也不会检测数据变化。当一个Loader进入重启状态,它必须解除对应的 数据引用,方便垃圾回收(同样地,客户端必须确定,在Loader无效之后,移除了所有该数据的引用)。通常,重启Loader不会两次调用;然而,在某 些情况下他们可能会启动,所以如果必要的话,它们必须能够适时重启。

  • 有一个观察者接受数据源改变的通知。Loader必须实现这些Observer其中之一(比如 ContentObserver,BroadcastReceiver等),来检测底层数据源的改变。当检测到数据改变,观察者必须调用 Loader#onContentChanged()。在该方法中执行两种不同操作:a. 如果Loader已经处于启动状态,就会执行一个新的载入操作; b. 设置一个flag标识数据源有改变,这样当Loader再次启动时,就知道应该重新载入数据了。

从以上我们大致就可以知道他们的区别所在了。

参考:

onConfigurationChanged的作用:http://www.cnblogs.com/lijunamneg/archive/2013/03/26/2982461.html

http://stackoverflow.com/questions/7120813/asynctaskloader-vs-asynctask

 

分类:  Android Pro
本文转自demoblog博客园博客,原文链接http://www.cnblogs.com/0616--ataozhijia/p/6204294.html如需转载请自行联系原作者

demoblog
相关文章
|
6月前
|
安全 Android开发 iOS开发
Android vs iOS:深入剖析两大移动操作系统的优劣与未来趋势####
【10月更文挑战第21天】 本文旨在通过技术视角,全面对比分析Android与iOS两大主流移动操作系统的架构差异、用户体验、安全性及生态系统等方面,探讨其各自优势与不足,并预测未来发展趋势。 ####
443 1
|
7月前
|
安全 Android开发 iOS开发
Android vs. iOS:构建生态差异与技术较量的深度剖析###
本文深入探讨了Android与iOS两大移动操作系统在构建生态系统上的差异,揭示了它们各自的技术优势及面临的挑战。通过对比分析两者的开放性、用户体验、安全性及市场策略,本文旨在揭示这些差异如何塑造了当今智能手机市场的竞争格局,为开发者和用户提供决策参考。 ###
|
10月前
|
安全 Android开发 iOS开发
Android vs iOS:哪个操作系统更适合你的智能设备?
在今天的移动设备市场上,Android和iOS是两个主要的操作系统选择。本文将分析它们的优缺点,帮助读者选择最适合自己需求的操作系统。 【7月更文挑战第6天】
182 2
|
11月前
|
IDE Android开发 iOS开发
Android VS iOS:哪个操作系统更适合开发者?**
**在移动应用开发领域,Android和iOS是两大主流操作系统,它们各自拥有独特的特点和优势。本文探讨了Android和iOS操作系统在开发者视角下的差异与优劣,分析了它们在开发环境、用户群体、市场前景等方面的比较,帮助开发者选择最适合他们需求的平台。
174 2
|
6月前
|
搜索推荐 Android开发 iOS开发
安卓vs. iOS:操作系统的终极对决####
本文探讨了安卓和iOS两种主流移动操作系统的特点,从用户体验、系统生态、硬件兼容性等维度进行对比分析。通过深入浅出的方式,揭示了两者在技术层面的优劣及未来发展趋势,旨在帮助用户更好地理解并选择适合自己的平台。 ####
|
6月前
|
安全 搜索推荐 Android开发
Android vs. iOS:解锁智能手机操作系统的奥秘####
【10月更文挑战第21天】 在当今这个数字化时代,智能手机已成为我们生活中不可或缺的伙伴。本文旨在深入浅出地探讨两大主流操作系统——Android与iOS的核心差异、优势及未来趋势,帮助读者更好地理解这两个平台背后的技术哲学和用户体验设计。通过对比分析,揭示它们如何塑造了我们的数字生活方式,并展望未来可能的发展路径。无论您是技术爱好者还是普通用户,这篇文章都将带您走进一个充满创新与可能性的移动世界。 ####
203 3
|
7月前
|
安全 Android开发 iOS开发
Android vs iOS:探索移动操作系统的设计与功能差异###
【10月更文挑战第20天】 本文深入分析了Android和iOS两个主流移动操作系统在设计哲学、用户体验、技术架构等方面的显著差异。通过对比,揭示了这两种系统各自的独特优势与局限性,并探讨了它们如何塑造了我们的数字生活方式。无论你是开发者还是普通用户,理解这些差异都有助于更好地选择和使用你的移动设备。 ###
189 3
|
6月前
|
安全 搜索推荐 Android开发
Android vs. iOS:一场永无止境的较量####
在智能手机操作系统领域,Android与iOS犹如两极,各自引领着不同的技术潮流和用户体验哲学。本文深入探讨了这两个平台的发展历程、核心优势、以及它们如何塑造了我们的数字生活,旨在为读者提供一个全面而客观的视角,理解这场持续多年的“战争”背后的真正意义。 ####
|
7月前
|
搜索推荐 vr&ar Android开发
Android vs. iOS:一场永无止境的辩论#### 一、
在当今的智能手机市场,Android和iOS无疑是两大巨头,它们各有千秋,吸引了全球数十亿用户。本文将深入探讨这两个操作系统的核心差异、优势以及未来发展趋势,帮助读者更全面地理解这场科技界的“双雄争霸”。 #### 二、
|
7月前
|
开发工具 Android开发 iOS开发
Android vs iOS:构建移动应用时的关键考量####
本文深入探讨了Android与iOS两大移动平台在开发环境、性能优化、用户体验设计及市场策略方面的差异性,旨在为开发者提供决策依据。通过对比分析,揭示两个平台各自的优势与挑战,帮助开发者根据项目需求做出更明智的选择。 ####