AsyncTask的使用

            AsyncTask类是android sdk提供的一个封装好的类,可以使任务在非UI Thread进行,而将实时结果以及最终结果回传给ui thread的一个框架.开发者无需进行thread的创建等操作,而只需要按照AsyncTask的框架进行操作即可。


一.AsyncTask的特点:

  AsyncTask虽然可以将任务放在非UI Thread进行操作,但是官方建议最好不要把过于耗时的任务(如网络请求等)用AsyncTask处理,而比较适合处理耗时较短的操作(读写文件流,数据库等)。

          耗时操作还是建议使用ThreadPoolExecutor,FutureTask等。


二.

1)AsyncTask执行execute(Params,Progress,Result)的三个参数

2)会回调4个方法

onPreExecute()-----------UI Thread

        doInBackground()--------非UI Thread

                                        onProgressUpdate()-----UI Thread

                                        onPostExecute()----------UI Thread


3)AsyncTask可以使用cancel(true)方法来取消这个任务的执行,当执行这个方法时,会在isCancelled()中返回true,并且会回调onCancelled()。

但是,这个isCanelled()方法在AsyncTask内部只是会在onProgressUpdate()和onPostExecute()时执行,并且在onProgressUpdate()如果取消则就不打印实时进程而不是进行其他操作。在onPostExecute()中执行前会判断是否被取消,如果返回true,则不执行。

也就是说,当doInBackground()执行时,如果判断cancelled()为true,也不会默认不执行,只是在执行完毕后回调onPostExecute()时判断下,如果想实时的监控,那么我们重写doInBackground时就要实时的判断IsCancelled(),如果是就直接取消,return即可。


三.AsyncTask类的规则

1)AsyncTask的类的加载一定要在UI Thread中进行,这个在Jelly Bean中就已经系统加载了

2)AsyncTask的实例的初始化一定要在UI Thread中进行。

3)asyncTask.execute()的方法一定要在UI Thread中调用。

4)不要手动调用AsyncTask的onPreExecute(),doInBackground(),onPostExecute(),onProgressUpdate()方法,都是系统内部回调的。

5)一个AsyncTask的实例只能够被执行一次,如果再次执行,内部会判断其状状态而抛异常。


后面说执行的流程及细节点






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值