异步任务AsyncTask的使用率在android开发中非常广,是thread和handler的包装类。本人也是在学习android的路上,今天学习了AsyncTask,想写个小例子来记住今天学习的内容。
先来看看AsynTask类的泛型,泛型里面有3个参数,第一个传入数据的数据类型,第二个是更新数据的数据类型,第三个是异步线程传出数据的数据类型。
AsynTask类必须要重写的方法是doInBackground()方法,执行异步线程,耗时操作就在里面完成.
还有一些主要用到的方法:
1.onPreExecute()方法:耗时操作进行前执行的方法,在主线程中进行,用于UI界面的更新。
2.onPostExecute()方法:耗时任务完成后执行的方法,在主线程中进行,用于UI界面的更新。
3.publishProgress()方法:用于耗时操作中,更新数据的传出。
4.onProgressUpdate()方法:用于更新数据,接收从publishProgress()方法传来的数据,在主线程中进行,通知UI界面 进行更新。
5.cancel()方法:用于结束耗时操作。
以下载APP为例,实现异步任务,并实时更新数据。
首先简单的下载布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.administrator.five_two_three.Main2Activity">
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:id="@+id/progressbar"
android:layout_marginTop="20dp"
android:layout_width="match_parent"
android:layout_height="15dp"
android:progress="0"
android:background=