1.AsyncTask介绍:在开发Android移动客户端时由于当下的程序很多都会联网进行数据交互,为了防止ANR(Application Not Response)现象,通常情况下程序会开多个线程,并将耗时的操作放到
主线程之外的线程中运行,而不会只用一个主线程,AsyncTask是线程的另一种表现形式,它可以做耗时操作并且操作后可以在onPostExecuse()方法中直接更新UI的数据.
2.AsyncTask使用方法:
首先创建一个类继承AsyncTask<参数1,参数2,参数3>并重写AsyncTask里面的方法(按执行顺序编号);
1> : onPreExecute() 在执行在实际耗时操作之前,可以在此方法中做一些控件的实例化操作,此方法运行后直接运行doInBackGround(Paramas...)
2> : doInBackGround(Params...) 此方法是实际做耗时造作的方法,该方法中的参数Params是可变参数
3> : onProgressUpdate(Progress) 此方法可以获取耗时操作的运行进度(下载时可以在这里显示下载进度)
4> : onPostExecute(Result ) 此方法在doInBackGround(Params...)方法完成后被UI调用,在此方法里可以进行更新UI操作.
3.AsyncTask<参数1,参数2,参数3> 中三个参数介绍:
参数1: 传入doInBackGround(Params...) 中的值的类型
参数2: 传入onProgressUpdate(Progress)中的值的类型
参数3: 传入onPostExecute(Result )中的值的类型,也是doInBackGround(Params...)返回的值的类型
4.AsyncTask使用注意:
AsyncTask必须在UI线程中实例化,并且在UI线程中调用execute方法运行AsyncTask
不要在UI线程中调用AsyncTask中的某一个或多个方法
同一个AsyncTask只能被调用一次,AsyncTask中的doInBackGround(Params...)是一个线程,当同一个AsyncTask被重复调用时相当于开了多个线程,而线程是同步执行的容易导致程序出错.