Android AsyncTask原理分析_At_Smim

这篇文章能让你简单的了解AsyncTask的异步原理

Android从1.5版本引入AsyncTask类

AsyncTask可以灵活方便的从子线程切换到UI线程。

AsyncTask是一个抽象类,想要使用它就必须创建一个类去继承它。

1.在执行AsyncTask的时候我们需要传入三个泛型参数。

        1.Params()

                在执行AsyncTask的时候用于在后台任务中使用(这个是耗时操作所需要的参数)。

        2.Progress()

                在执行AsyncTask的时候如果需要在界面上显示当前的进度,就使用这个泛型参数做为进度类型。

        3.Resule()

                在任务执行完毕后如果需要返回结果,就使用这个泛型参数去做返回值类型。

扫描二维码关注公众号,回复: 4838824 查看本文章

2.实现AsyncTask我们会重写AsyncTask的四个方法。

        1.onPreExecute()

                这个方法会在后台任务开始执行之间调用,用于进行一些界面上的初始化操作,比如显示一个进度条对话框等。

        2.doInBackground()

                这个方法中的代码都会在子线程中运行,我们应该在这里去处理所有的耗时任务,

                任务一旦完成就可以通过return语句来将任务的执行结果进行返回。

                注:在這个方法中是不可以进行UI操作,想要更行UI可以调用publishProgress()方法来完成。

        3.onProgressUpdate()

                当在后台任务中调用了publishProgress()方法后,这个方法就很快会被调用,方法中携带的参数就是在后台

                任务中传递过来的,在这个方法中可以对UI进行操作,利用参数中的数值就可以对界面元素进行相应的更新。

        4.onPostExecute()

                当后台任务执行完毕并通过return语句进行返回时,这个方法就很快会被调用,        

                返回的数据就会作为参数传递到此方法中,可以利用返回的数据进行一些UI的操作,比如提醒任务执行的结果

                以及关闭掉进度条对话框等。

使用AsyncTask我们并不需要去考虑异步消息处理机制,也不需要专门使用一个Handler来发送和接收消息,

 只需要调用publishProgress()方法就可以轻松的从子线程切换到UI线程了。

相信看到这里你已经对AsyncTask已经有了一个很大的了解了


                

猜你喜欢

转载自blog.csdn.net/At_Swim/article/details/79927315
今日推荐