码迷,mamicode.com
首页 > 其他好文 > 详细

Handler和AsyncTask的区别

时间:2016-08-11 17:19:00      阅读:354      评论:0      收藏:0      [点我收藏+]

标签:

              

                          

                        HandlerAsyncTask的区别

1Handler

实现原理:Handler实现时,包含HandlerThreadMessageLooper对象,

主线程启动子线程(Thread)。子线程运行生成Message-Looper获取Message并传给 Handler依次获取LooperMessage,并进行UI更新。

2)特点:Handler可以分发Message对象和Runnable对象到主线程中,每个Handler实例,都会绑定到创建他的线程中,安排消息或Runnable 在某个主线程中某个地方执行 ;安排一个动作在不同的线程中执行。

 

3)优缺点:

优点:使用Handler实现异步线程,结构清晰,功能定义明确。执行多个后台任务 时简单、清晰。

缺点:在单个后台异步线程处理时,代码过多,相对结构过于复杂。

2AsyncTask

1)实现原理:AsyncTask是轻量级异步类,直接继承AsyncTask,在类中实现异步操作。并通过接口实现UI进度更新,最后把执行结果返回给主线程。

2)特点:直接继承Object类。定义了三种泛型类型 ParamsProgressResult

Params 启动任务执行的输入参数,比如HTTP请求的URLProgress 后台任务执行的百分比。Result 后台执行任务最终返回的结果,比如String

异步加载数据最少要重写onPostExecute(Result)  相当于Handler 处理UI的方式,在这里面可以使用在doInBackground 得到的结果处理操作UI。 此方法在主线程执行,任务执行的结果作为此方法的参数返回

 规则·:1)Task的实例必须在UI thread中创建;execute方法必须在UI thread中调用;

  2)不要手动的调用onPreExecute(), onPostExecute()doInBackground(), onProgressUpdate()方法;该task只能被执行一次,否则多次调用时将会出现异常。

3)优缺点:

优点:AsyncTask实现异步线程简单,快捷;过程可控。

缺点:在使用多个异步操作和需要进行UI更新时比较复杂。

Handler和AsyncTask的区别

标签:

原文地址:http://www.cnblogs.com/sangfan/p/5761690.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!