15,AsyncTask讲解+可执行示例代码(已经更新下载地址)

1,简介:

首先要明白,这个是一个抽象类。咱们如果想用的话,必须要继承AsyncTask,继承时候的三个参数的解释,请看第3点。实现里面的方法,里面的方法和执行顺序,请看第4点。

在使用的时候,先生成该对象,然后执行execute(Params)方法,其中方法之中传入的A参数,会在这个里面不仅包含了Handle和Thread,而且加入了线程池。

2,线程池

线程池的作用至关重要。

举例说明: 一个layout之中有个imageView需要更新,咱们为了防止UI线程阻塞,所以新开线程进行获取imageView,然后在主线程之中进行更新imageView,如果有1000个imageView需要更新,那么就会开启1000个线程,这是十分可怕的事情。所以,线程池十分重要。

实现线程池的方法有两种ThreadPoolTask和AsyncTask,通过对比可以发现,ExecutorService相比AsyncTask,并发能力更强,加载的速度也更快,AsyncTask在加载过程中明显变现出顺序性,加载的速度要慢一些。 (这段话摘自前辈:http://blog.csdn.net/carrey1989/article/details/12002033,在此表示感谢)

因为工作中,领导要求按照顺序显示,略慢一点不影响,所以用的是AsyncTask。


3,总述:

public class bbb extends AsyncTask<Params,Progress, Result> {

........实现代码,此处省略....}

咱们可以看见,bbb类之中传入了A,B,C3个类型的参数,这3个参数几乎可以是任意类型。

而且代表一定的意义。

Params,启动任务执行时候输入的参数,由外部传入,也就是外面生成对象,

执行的execute(A)传入的A,可以是URI,URL,String等等等等。

该参数作用于doInBackground(Params... params)的输入参数类型。


Progress,后台任务执行的百分比,一般都是用来更新UI空间的进度条之类的东西。

该参数作用于onProgressUpdate(Progress[] values)的输入参数类型。

Result,该类执行完成之后,最后返回的结果,可以是bitmap等等等等。

该参数作用于onPostExecute(Result result)的输入参数类型,

以及doInBackground(Params... params)的返回参数类型。

(这句我老忘记写。。而且我觉得也蛮重要的,每次上班途中突然想起来,

到办公室以后忙的就忘记了。。

然后第二天又想起来了。。没错你猜对了,到办公室又忘记了。。

第三天。。第四天。。。总而言之为了这句话,

我专门给我带的实习生打了个电话,让他到办公室提醒我,

所以特意标红。。。怎么说也是好几毛钱呢,有木有啊!!!!!!)

4,里面的方法执行顺序和解释

onPreExecute()doInBackground(Params... params) onProgressUpdate(Progress[] values)onPostExecute(Result result)

源码我就不贴了,贴了也没什么意思,你只要能看懂我上面写的那个箭头,

你也就大概了解了这个问题。

其中有几点必须说明:2

1,onPreExecute(),这个方法适合初始化,例如将进度条归零啊,

imageView设置为空之类的出事操作~

2,doInBackground(Params... params) ,这个方法是一定要实现的,

而且这个里面可以执行耗时较长的操作,

最关键的,不可以对UI进行更新,因为该方法是在子线程之中进行,

但是可以调用publishProgress(int number)更新进度条,实际上不是在该线程进行更新,

依然在主线程更新进度条。

3,publishProgress(int number),这个number就是之进度条更新的,

调用publisProgress(int number)之后,

会自动调用onProgressUpdate(Progress[] values)


5,例子下载地址

http://download.csdn.net/detail/zzjjqqzzhhqq/7774541

如果有任何疑问和问题,欢迎各位拍砖,喷神您就放过小弟吧



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值