AsyncTask与Handler的区别
来源:互联网 发布:oracle数据库多少钱 编辑:程序博客网 时间:2024/04/30 10:24
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 在单个后台异步处理时,显得代码过多,结构过于复杂(相对性)
package cn.com.chenzheng_java;import android.os.AsyncTask;/** * * @author chenzheng_java * @description 异步任务AcyncTask示例 * */public class MyAsyncTask extends AsyncTask<String, Integer, Object> {/** * 该方法由ui线程进行调用,用户可以在这里尽情的访问ui组件。 很多时候,我们会在这里显示一个进度条啥的,以示后台正在 执行某项功能。 */@Overrideprotected void onPreExecute() {super.onPreExecute();}/** * 该方法由后台进程进行调用,进行主要的耗时的那些计算。 该方法在onPreExecute方法之后进行调用。当然在执行过程中 * 我们可以每隔多少秒就调用一次publishProgress方法,更新 进度信息 */@Overrideprotected Object doInBackground(String... params) {return null;}/** * doInBackground中调用了publishProgress之后,ui线程就会 调用该方法。你可以在这里动态的改变进度条的进度,让用户知道 * 当前的进度。 */@Overrideprotected void onProgressUpdate(Integer... values) {super.onProgressUpdate(values);}/** * 当doInBackground执行完毕之后,由ui线程调用。可以在这里 返回我们计算的最终结果给用户。 */@Overrideprotected void onPostExecute(Object result) {super.onPostExecute(result);}}
- AsyncTask与Handler的区别
- AsyncTask与Handler的区别
- AsyncTask与Handler的相同点跟区别
- AsyncTask与Handler的相同点跟区别
- Android之Handler与AsyncTask的区别
- Android中asyncTask与handler的区别
- AsyncTask与Thread+Handler的区别、AsyncTask的使用
- Android Asynctask与Handler的比较,优缺点区别,Asynctask源码
- Android Asynctask与Handler的比较,优缺点区别,Asynctask源码
- Handler与AsyncTask的区别,不过多数用handler
- AsyncTask 与 Thread+Handler区别
- AsyncTask和Handler的区别
- Handler和AsyncTask的区别
- 线程之间通讯之AsyncTask与Handler的区别
- asynctask与handler的比较
- AsyncTask和Thread加Handler的区别
- Android中的Handler和AsyncTask的区别
- Android中的Handler和AsyncTask的区别
- JDBC连接数据库集
- oracle 触发器跨库问题
- 解决AJAX中使用UpdatePanel后再用RegisterStartupScript等无法弹出对话框问题
- Android应用设计提示:Google Play和<uses-sdk>属性
- 第15周实验报告任务2
- AsyncTask与Handler的区别
- java data
- ASP.Net超时时间已到解决办法-
- ASP.NET MVC-- 在网页上显示一个时钟
- 同时有SQL2000和2005共存,连接2005时提示 无效连接
- 简单的BFS A strange lift
- ATL TRACE
- linux--多线程--面试题
- 【Linux】Linux 下socket 编程