Android异步任务(AsyncTask)笔记

异步任务



1)异步任务是什么,有什么作用?

像Handler消息传递机制类似,android官方提供的专门用于处理耗时超作,并及时更新UI组件的一个抽象类.
常用于耗时操作,如网络操作,数据库操作,等大量的耗时操作.



2)对AsyncTask<Params, Progress, Result>类的理解?

   a.AsyncTask是什么样的类?

   AsyncTask是个抽象类,这一属性决定我们运用时要继承该类,并实现该类中的方法.


   b.<>括号中的三个参数的含义?(重点)

         Params: 1.execute(Params...)方法中的参数类型;
               2.doInBackground(Params...)方法中的参数类型.


Progress: 1.publishProgress(Progress...)方法中的参数类型;
                 2.onProgressUpdate(Progress...)方法中的参数类型.


Result: 1.Result doInBackground(Params...)方法中的返回值类型.
             2.onPostExecute(Result)方法中的参数类型.



   c.参数后...的含义?

        ...为可变参数类型,理解:编译器会将形参转变成一个数组形参,
   这样我们就可以用过params[0],或params[1]等下标方法来获取形参的值.



3)对AsyncTask类中的几个必要方法的理解,要理解方法是由谁执行?什么时候执行的?在哪里执行的?

  将<>中的三个参数与方法联系起来?

下面说的执行次序的前提是下面的所有方法都被调用


序号方法名执行者执行次序哪里执行方法说明
1execute(Params...)AsyncTask实例
-主线程
通过创建AsyncTask实例,并调用该方法后,就会启动异步任务
2onPreExecute()
系统调用
1主线程
用于完成一些初始化的准备工作
3Result doInBackground(Params...)
系统调用
2后台线程
用于完成耗时工作
4publishProgress(Progress...)
系统调用
3 在doInBackground方法中调用
用于通知主线程更新任务的进度
5onProgressUpdate(Progress...)
系统调用
4主线程
用于更新任务的进度,(publishProgress方法调用后会触发该方法的调用)
6onPostExecute(Result)
系统调用
5主线程
用于处理结果


4)如何使用AsyncTask类?(结合多线程的使用来思考)


1.继承AsyncTask抽象类,实现自定义的异步任务.

2.自定必要的参数类型,重写需要的方法.

3.在主线程创建AsyncTask的实例,并调用execute()方法就OK了!



5)高级部分

关于AsyncTask异步任务并发执行问题?


在android3.0后,异步任务改变为顺序执行,即如果连续两次或多次调用异步任务时(new AsyncTask().execute()),
系统会按照执行顺序一个一个地执行异步任务,而不会并发地执行它们.


怎样才能使其并发地执行?
在android3.0后,增加了一个方法:
executeOnExecutor(Executor exec, Params... params)
我们可以使用该方法,将第一个参数设置为并发执行,那么异步任务改变为并发执行.


对于第一个参数Executor exec的理解;
该参数要求传入一个线程池对象,即传入一个(Executors.newCachedThreadPool())线程池对象,
或者使用android官方提供的线程池对象,android官方对于第一个参数提供了两个对象供我们使用,分别为:
AsyncTask.THREAD_POOL_EXECUTOR 如果使用其设置第一个参数,异步任务就会改变为并发执行.
AsyncTask.SERIAL_EXECUTOR 如果使用其设置第一个参数,异步任务还是顺序执行,与execute()一样
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值