- 浏览: 136827 次
- 性别:
文章分类
- 全部博客 (226)
- Android (181)
- C# (8)
- BOOTSTRAP (1)
- ASP.NET MVC4 (1)
- 设计模式 (1)
- VB.NET (1)
- WPF (0)
- PLC (0)
- 电气图纸 (0)
- 数据库 (5)
- Java (5)
- Window phone (0)
- 仪器仪表 (0)
- 变频器 (0)
- 低压电器 (0)
- 物联网 (0)
- Photoshop (1)
- SVN (1)
- 单片机 (5)
- IT (1)
- Android_IOS风格 (0)
- Android_广告栏展示 (0)
- Android_动画 (1)
- Android_Adapter (0)
- Android_ListView (1)
- Android_File (2)
- Android_表单提交 (0)
- Android_WebView (1)
- PHP (2)
- Android_Excel (1)
- Android_drawable (1)
- Android_theme (2)
- Android_phonegap (2)
- Android_AndroidManifest (1)
- ThinkPHP (0)
- Jquery (1)
- Android_ContentProvider (1)
最新评论
AsyncTask和Handler对比
1 ) AsyncTask实现的原理,和适用的优缺点
AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.
使用的优点:
l 简单,快捷
l 过程可控
使用的缺点:
l 在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来.
2 )Handler异步实现的原理和适用的优缺点
在Handler 异步实现时,涉及到 Handler, Looper, Message,Thread四个对象,实现异步的流程是主线程启动Thread(子线程)àthread(子线程)运行并生成Message-àLooper获取Message并传递给HandleràHandler逐个获取Looper中的Message,并进行UI变更。
使用的优点:
l 结构清晰,功能定义明确
l 对于多个后台任务时,简单,清晰
使用的缺点:
l 在单个后台异步处理时,显得代码过多,结构过于复杂(相对性)
AsyncTask介绍
Android的AsyncTask比Handler更轻量级一些,适用于简单的异步处理。
首先明确Android之所以有Handler和AsyncTask,都是为了不阻塞主线程(UI线程),且UI的更新只能在主线程中完成,因此异步处理是不可避免的。
Android为了降低这个开发难度,提供了AsyncTask。AsyncTask就是一个封装过的后台任务类,顾名思义就是异步任务。
AsyncTask直接继承于Object类,位置为android.os.AsyncTask。要使用AsyncTask工作我们要提供三个泛型参数,并重载几个方法(至少重载一个)。
AsyncTask定义了三种泛型类型 Params,Progress和Result。
Params 启动任务执行的输入参数,比如HTTP请求的URL。
Progress 后台任务执行的百分比。
Result 后台执行任务最终返回的结果,比如String。
使用过AsyncTask 的同学都知道一个异步加载数据最少要重写以下这两个方法:
doInBackground(Params…) 后台执行,比较耗时的操作都可以放在这里。注意这里不能直接操作UI。此方法在后台线程执行,完成任务的主要工作,通常需要较长的时间。在执行过程中可以调用publicProgress(Progress…)来更新任务的进度。
onPostExecute(Result) 相当于Handler 处理UI的方式,在这里面可以使用在doInBackground 得到的结果处理操作UI。 此方法在主线程执行,任务执行的结果作为此方法的参数返回
有必要的话你还得重写以下这三个方法,但不是必须的:
onProgressUpdate(Progress…) 可以使用进度条增加用户体验度。 此方法在主线程执行,用于显示任务执行的进度。
onPreExecute() 这里是最终用户调用Excute时的接口,当任务执行之前开始调用此方法,可以在这里显示进度对话框。
onCancelled() 用户调用取消时,要做的操作
使用AsyncTask类,以下是几条必须遵守的准则:
Task的实例必须在UI thread中创建;
execute方法必须在UI thread中调用;
不要手动的调用onPreExecute(), onPostExecute(Result),doInBackground(Params...), onProgressUpdate(Progress...)这几个方法;
该task只能被执行一次,否则多次调用时将会出现异常;
见博客文章:http://www.cnblogs.com/devinzhang/archive/2012/02/13/2350070.html
1 ) AsyncTask实现的原理,和适用的优缺点
AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.
使用的优点:
l 简单,快捷
l 过程可控
使用的缺点:
l 在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来.
2 )Handler异步实现的原理和适用的优缺点
在Handler 异步实现时,涉及到 Handler, Looper, Message,Thread四个对象,实现异步的流程是主线程启动Thread(子线程)àthread(子线程)运行并生成Message-àLooper获取Message并传递给HandleràHandler逐个获取Looper中的Message,并进行UI变更。
使用的优点:
l 结构清晰,功能定义明确
l 对于多个后台任务时,简单,清晰
使用的缺点:
l 在单个后台异步处理时,显得代码过多,结构过于复杂(相对性)
AsyncTask介绍
Android的AsyncTask比Handler更轻量级一些,适用于简单的异步处理。
首先明确Android之所以有Handler和AsyncTask,都是为了不阻塞主线程(UI线程),且UI的更新只能在主线程中完成,因此异步处理是不可避免的。
Android为了降低这个开发难度,提供了AsyncTask。AsyncTask就是一个封装过的后台任务类,顾名思义就是异步任务。
AsyncTask直接继承于Object类,位置为android.os.AsyncTask。要使用AsyncTask工作我们要提供三个泛型参数,并重载几个方法(至少重载一个)。
AsyncTask定义了三种泛型类型 Params,Progress和Result。
Params 启动任务执行的输入参数,比如HTTP请求的URL。
Progress 后台任务执行的百分比。
Result 后台执行任务最终返回的结果,比如String。
使用过AsyncTask 的同学都知道一个异步加载数据最少要重写以下这两个方法:
doInBackground(Params…) 后台执行,比较耗时的操作都可以放在这里。注意这里不能直接操作UI。此方法在后台线程执行,完成任务的主要工作,通常需要较长的时间。在执行过程中可以调用publicProgress(Progress…)来更新任务的进度。
onPostExecute(Result) 相当于Handler 处理UI的方式,在这里面可以使用在doInBackground 得到的结果处理操作UI。 此方法在主线程执行,任务执行的结果作为此方法的参数返回
有必要的话你还得重写以下这三个方法,但不是必须的:
onProgressUpdate(Progress…) 可以使用进度条增加用户体验度。 此方法在主线程执行,用于显示任务执行的进度。
onPreExecute() 这里是最终用户调用Excute时的接口,当任务执行之前开始调用此方法,可以在这里显示进度对话框。
onCancelled() 用户调用取消时,要做的操作
使用AsyncTask类,以下是几条必须遵守的准则:
Task的实例必须在UI thread中创建;
execute方法必须在UI thread中调用;
不要手动的调用onPreExecute(), onPostExecute(Result),doInBackground(Params...), onProgressUpdate(Progress...)这几个方法;
该task只能被执行一次,否则多次调用时将会出现异常;
见博客文章:http://www.cnblogs.com/devinzhang/archive/2012/02/13/2350070.html
发表评论
-
LayoutInflater
2014-12-22 21:43 506在实际开发中LayoutInflater这个类还是非常有用的, ... -
ContentProvider之读写短消息
2014-12-08 11:08 560http://blog.csdn.net/liuhe ... -
android之启用默认浏览器
2014-11-03 12:36 473一、启动android默认浏览器 Intent inten ... -
eclipse下看android support v4源码
2014-09-18 22:24 593http://cfy10.blog.51cto.com/707 ... -
Android学习 (七)synchronized
2014-09-17 10:16 577http://hi.baidu.com/fenghuang12 ... -
ScheduledExecutorService定时周期执行指定的任务
2014-09-17 09:57 629http://blog.csdn.net/tsyj810883 ... -
android rotate
2014-09-16 15:21 1166rotate:fromDegrees:其实角度。toDegr ... -
Android获取Manifest中<meta-data>元素的值
2014-09-12 15:39 636在AndroidManifest.xml中,<meta- ... -
PopupWindow
2014-09-12 11:09 8401-初始化 PopupWindow mPop = new P ... -
Android的事件分发onInterceptTouchEvent与onTouchEvent、OnClickListener、OnLongClick
2014-09-11 11:05 863onInterceptTouchEvent()是ViewGro ... -
scrollTo、scrollBy、getScrollX、getScrollY这4个方法的含义,Scroller的简单用法
2014-09-11 10:43 1504scrollTo、scrollBy都是 对 ... -
VelocityTracker
2014-09-11 10:14 643android.view.VelocityTracker主要用 ... -
Android之SurfaceHolder
2014-09-09 16:05 563SurfaceHolder,可以把它当成surface的控制器 ... -
android performClick使用
2014-09-09 13:53 1103performClick 是使用代码主动去调用控件的点击事件( ... -
slidingmenu使用说明
2014-09-07 10:17 580左侧、右侧和两边 在BaseActivity中将Slid ... -
Android之SlidingMenu属性详解
2014-09-07 09:52 616SlidingMenu 常用属性介绍: menu.setMod ... -
Android IOS风格侧边栏效果
2014-08-27 13:45 311http://download.csdn.net/detail ... -
android 代码设置、打开wifi热点及热点的连接
2014-08-26 10:30 999见博客文章 http://blog.csdn.net/luob ... -
Android 之两点触摸技术
2014-08-26 09:58 705package mobile.android.multi.to ... -
Android动画之translate(位移动画)
2014-08-25 15:53 439http://www.cnblogs.com/bavariam ...
相关推荐
在Android中使用AsyncTask和Handler线程间交互的方式,详情参见博客:http://www.cnblogs.com/plokmju/p/android_AsyncTask.html和http://www.cnblogs.com/plokmju/p/android_Handler.html
Android Handler AsyncTask 异步加载
AsyncTask和Handler的优缺点介绍和比较
Android AsyncTask用法和异步加载图片通过AsyncTask 从网络上异步加载一张图片
AsyncTask和Handler
首先明确Android之所以有Handler和AsyncTask 都是为了不阻塞主线程(UI线程) 且UI的更新只能在主线程中完成 因此异步处理是不可避免的 Android为了降低这个开发难度 提供了AsyncTask AsyncTask就是一个封装过的...
主要介绍了Android中AsyncTask与handler用法,以实例形式较为详细的分析了Android中AsyncTask与handler的功能、用法与相关注意事项,并附带完整实例源码供读者下载,需要的朋友可以参考下
AsyncTask与Handler实现进度条的方式
三种不同的方式讲述了如何开辟新线程处理进度条的更新。运行时需修改Mainfest,来用不同的方式运行。默认是使用AsyncTask运行
Android AsyncTask的简单Demo,对应Blog文章:http://blog.csdn.net/dolacmeng/article/details/50215519
Handler与AsyncTask使用示例,Handler AsyncTask 示例 looper
AsyncTask的用法
android中AsyncTask和jni技术简单应用--附案例附代码
android Handler Thread AsyncTask httpURLConnection学习的代码
比较了handler加thread 和 AsyncTask 在处理消息的不同,详见博客 http://blog.csdn.net/renlei0109/article/details/39524463
Android 使用AsyncTask异步更新UI界面
在Android中实现异步任务机制有两种方式,Handler和AsyncTask。 Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面的更新,这种方式对于整个过程的控制比较精细,...
AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度...
Android开发之AsyncTask机制及使用细节例子源码 详见博客 http://www.cnblogs.com/samy/p/4217263.html