AsyncTask 和Handler 的优缺点比较
来源:互联网 发布:em算法 python代码 编辑:程序博客网 时间:2024/05/18 00:35
AsyncTask 实现的原理和优缺点:
优点: 快捷 方便
缺点: 当执行多个后台任务,和并需要ui 变更起来就比较复杂
Handler 实现的原理和优缺点:
优点: 简单 清晰
缺点:当执行单个后台任务,显得代码过多,结构复杂(相对性)
AsyncTask 介绍
Android 的AsyncTask 比handler 更轻量级一些(只是在代码上,而实际上要比handler更耗资源)适用于简单的异步操作, asyncTask 就是一个封装或的后台异步任务类。 继承与 Object 类。要使用Asynctask 工作,提供了3个泛型参数和并重载方法几个方法
AsyncTask定义了3中泛型类型 params ,progress , result.
params 启动任务执行的输入参数,比如http 的url.
progress 是 显示任务执行的百分比。
result 是后台任务执行返回的结果。如 String.
使用AsynTask 异步任务类要重写的方法
doingbackground(Params) 后台执行任务,比较耗时的操作都放到这里,注意这里不能直接操作ui. 操作完后调用
public progress(progress)来更新任务进度。
onpostexcut(Result) 此方法运行在主线程中,任务执行结果 作为此方法的参数返回。得以作为此方法的相当于handler处理ui 的方式。在这里直接可以使用 doingbackground 处理的结果来更新UI。
有必要的话,还需要重写以下3个方法:
onprogressUpdate(progress), 使用进度条来增加用户的体验度,此方法执行在主线程中,用户显示任务执行的进 度。
onPreExecute 这里是用户最终调用 Execute 时的接口,当任务执行之前开始调用此方法,可以在这里显示进度对话框。
onCancelled() 用户调用取消,要做的操作。
使用AsncyTask 一下是需要注意的哦:
Task 必须在UI thread中创建
execute 必须在 UI thread 中调用。
不要手动的调用onPreExecute(), onPostExecute(Result),doInBackground(Params...), onProgressUpdate(Progress...)这几个方法;
该task 只能被执行一次,若多次调用会出现异常。
Handler 介绍:
handler 主要接收子线程传递过来的数据,并且用此数据配合线程更新UI。
handler 运行在主线程,它与子线程是通过message 对象来传递数据的,这个时候handlder就接受着从子线程传递过来的数据(子线程用sendmessage())方法来传递 Message对象,把这些消息放到主线程,配合主线程更新UI.
handler 和分发 message对象和runnable对象到主线程中,每个handler实例都会绑定到它创建的线程。
handler中分发消息的一些方法:
Post (Runnable)
PostAtTime(Runnable,long)
PostDelayed(Runnable,long)
SendEmptyMessage(int)
sendMessageAtTime(Message ,long)
sendMessageDelayed(Message,long)
总结: 数据简单使用 AsyncTask 代码实现简单。数据量多且复杂使用 Handler+ thread 想比较Asynctack 来说能更好的利用系统资源且高效。
- AsyncTask和Handler的优缺点比较
- AsyncTask和Handler的优缺点比较
- AsyncTask和Handler的优缺点比较
- AsyncTask和Handler的优缺点比较
- AsyncTask和Handler的优缺点比较
- AsyncTask和Handler的优缺点比较
- AsyncTask和Handler的优缺点比较
- AsyncTask和Handler的优缺点比较
- AsyncTask和Handler的优缺点比较
- AsyncTask和Handler的优缺点比较
- AsyncTask和Handler的优缺点比较
- AsyncTask和Handler的优缺点比较
- AsyncTask和Handler的优缺点比较
- AsyncTask 和Handler 的优缺点比较
- AsyncTask和Handler的优缺点比较
- AsyncTask和Handler的优缺点比较
- AsyncTask和Handler的优缺点比较
- AsyncTask和Handler的优缺点比较
- 软件工程(C编码实践篇)学习总结
- python项目内import其他内部package的模块的正确方法
- javascript快速入门第二章基础知识(下)
- 找回以前的号
- 如何在 MySQL 中判断中文字符?
- AsyncTask 和Handler 的优缺点比较
- Android Service串行服务:IntentService(系列3)
- 36.Android 自定义ContentProvider
- 软件工程(C编码实践篇)学习总结
- java中i=i++问题分析
- C#多态前奏
- View类通用模板(C#)
- Head First Python第三章知识点记录
- Java类的连接与初始化