Android Asynchronization

整个过程有点复杂,认真理解下,还是觉得设计得挺好的。


异步操作 AsyncTask


对于耗时较多的操作(如网络操作等)因为会消耗时间而使程序阻塞,那么应该采用异步线程才进行。


实现一个继承AsyncTask 异步操作的类。覆盖doInBackground方法
采取不直接调用所要进行的操作,而是在doInbackground中实现。
实例化一个AsyncTask的继承类,然后调用其execute()方法即可。那么耗时操作就在新的线程中执行了,如果遭遇阻塞将不会影响到UI线程。


AsyncTask:
execute()
onPreExecute():在UI线程中执行,进行异步线程执行之前的UI准备工作
onPostExecute():在UI线程中执行,那么可以控制UI控件
doInBackground():无法控制UI,因为它是在另外一个线程中执行的,在这个方法里我们执行耗时操作,并通过调用publicProgress()进而调用onProgressUpdate()方法,从而更新UI。
onProgressUpdate():在异步任务执行过程中对UI进行修改


生成AsyncTask对象之后,执行execute(),首先执行的是onPreExecute(),然后是doInBackground(),中间会调用onProgressUpdate(),最后是onPostExecute()。其中,doInBackground()是在一个新的进程中执行的。


在doInBackground()调用publishProgress()将会调用onProgressUpdate(),从而更新UI。从这点看,publishProgress的作用是进程间通信。


doInBackground()的参数是来自调用execute()得到的参数,也是AsyncTask三个参数中的第一个。


doInBackground()的返回值由AsyncTask的第三个参数决定,这个返回值会作为onPostExecute()的参数。


onProgressUpdate()的参数来自publishProgress()的参数,由第二个类型参数定义

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值