Android AsyncTask 应用
来源:互联网 发布:java二次开发平台 编辑:程序博客网 时间:2024/06/14 17:50
在Android中实现异步任务机制有两种方式,Handler和AsyncTask。
1、对于耗时的操作,我们的一般方法是开启“子线程”。如果需要更新UI,则需要使用handler
2、如果耗时的操作太多,那么我们需要开启太多的子线程,这就会给系统带来巨大的负担,随之也会带来性能方面的问题。在这种情况下我们就可以考虑使用类AsyncTask来异步执行任务,不需要子线程和handler,就可以完成异步操作和刷新UI。
3、AsyncTask:对线程间的通讯做了包装,是后台线程和UI线程可以简易通讯:后台线程执行异步任务,将result告知UI线程。
4、使用方法:共分为两步,自定义AsyncTask,在耗时的地方调用自定义的AsyncTask。
step1:继承AsyncTask<Params,Progress,Result>
Params:输入参数。对应的是调用自定义的AsyncTask的类中调用excute()方法中传递的参数。如果不需要传递参数,则直接设为Void即可。Progress:子线程执行的百分比Result:返回值类型。和doInBackground()方法的返回值类型保持一致。
step2:实现以下几个方法:执行时机和作用看示例代码,以下对返回值类型和参数进行说明
onPreExecute():无返回值类型。不传参数
doInBackground(Params... params):返回值类型和Result保持一致。参数:若无就传递Void;若有,就可用Params
publishProgress(Params... params):在执行此方法的时候会直接调用onProgressUpdate(Params... values)
onProgressUpdate(Params... values):无返回值类型。参数:若无就传递Void;若有,就可用Progress
onPostExecute(Result result) :无返回值类型。参数:和Result保持一致。
step3:在调用自定义的AsyncTask类中生成对象;
执行:对象.excute(Params... params);
小注:
AsyncTask的执行原理1) Task的实例必须在UI thread中创建2) execute方法必须在UI thread中调用3) 不要手动的调用onPreExecute(), onPostExecute(Result),doInBackground=\'#\'" onProgressUpdate(Progress...)这几个方法4) 该task只能被执行一次,否则多次调用时将会出现异常
当我们调用execute(Params... params)方法后,execute方法会调用onPreExecute()方法,然后由ThreadPoolExecutor实例sExecutor执行一个FutureTask任务,这个过程中doInBackground(Params... params)将被调用,如果被开发者覆写的doInBackground(Params... params)方法中调用了publishProgress(Progress... values)方法,则通过InternalHandler实例sHandler发送一条MESSAGE_POST_PROGRESS消息,更新进度,sHandler处理消息时onProgressUpdate(Progress... values)方法将被调用;如果遇到异常,则发送一条MESSAGE_POST_CANCEL的消息,取消任务,sHandler处理消息时onCancelled()方法将被调用;如果执行成功,则发送一条MESSAGE_POST_RESULT的消息,显示结果,sHandler处理消息时onPostExecute(Result result)方法被调用。
0 0
- Android AsyncTask 应用
- android.os.AsyncTask的应用
- android应用开发之AsyncTask
- android的AsyncTask的应用
- android AsyncTask的应用
- Android照片墙应用实现(AsyncTask应用)
- Android应用自动更新功能实现使用AsyncTask!
- Android中Handler、HandlerThread、AsyncTask的应用
- Android中Handler、HandlerThread、AsyncTask的应用
- Android应用开发学习笔记之AsyncTask
- Android应用自动更新功能实现使用AsyncTask!
- Android Thread AsyncTask handler 应用区别
- 让Android应用保持灵敏响应:AsyncTask
- Android的AsyncTask简介与示例应用
- android中asynctask的应用实例
- 杂记3:android AsyncTask基础应用
- Android asyncTask
- Android AsyncTask
- hdu 5706 GirlCat(dfs)
- CodeForces 616A 大数的比较 字符串的使用
- Android XML解析
- jps命令使用
- 20160609常规赛总结
- Android AsyncTask 应用
- AndroidStudio常用快捷键
- php笔记(11)——json_encode后中文编码问题
- ArcGIS连接局域网另一台电脑上的SQLServer数据库
- [转]Linux GCC常用命令
- 第十六周项目一 d阅读程序(3)
- 5710 Digit-Sum(找规律)
- 真机中ssh连接virtualBox中的虚机
- Scala语言初入门