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

关于handler和异步任务

时间:2015-02-27 06:40:21      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

handler使用流程概要

首先在主线程新建一个handler实例,重写onhandlemessage(Message msg) 方法,对传过来的message进行处理

然后在子线程中完成操作,操作完成后新建一个message对象,调用handler实例的sendmessage方法,将message传给消息队列,再由Looper分发给handler

 

异步任务使用流程

新建一个类,继承 AsyncTask<Void,Integer,Integer>,三个泛型分别是传入参数类型,进度类型,结果类型

在这个类里面主要重写几个方法

 protected void onPreExecute() 在doinbackground之前调用,做准备工作,在子线程运行

 protected Integer doInBackground(Void... params)   具体的子线程操作

在这个方法里可以用publishProgress()方法来更新进度

 protected void onProgressUpdate(Integer... values)更新进度,运行在UI线程

protected void onPostExecute(Integer integer) doinbackground执行完毕后执行,运行在UI线程

要使用这个类,新建一个实例,然后调用该实例的excute()方法即可。

 

关于这二者的区别,handler比较容易对子线程的过程进行精确控制,但是代码繁琐,不简洁

          Asynctask代码简洁,但是操作不精细

网上有人说asynctask比handler轻量级,其实不准确,因为asynctask内部还包含了一个线程池的处理,其实是比handler更重量级的,只是代码看起来更简洁,所以说是轻量级的

关于handler和异步任务

标签:

原文地址:http://www.cnblogs.com/u3shadow/p/4302493.html

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