当一个线程执行的时候,可能会产生一些阻碍,这时用户就不能再执行当前线程的其他操作,可能需要等待其响应。于是,解决的办法就是把可能产生阻碍的步骤放在另一个线程上执行,这样当前线程的操作就可以不受影响。
例子:在某个软件中,点击某个按钮会向服务器发送请求,这时在网络传输中可能产生很多事件阻碍,所以就要把该操作放在另一个线程中,即异步操作。
代码:需要写一个类继承AsyncTask<Void,Void,Void>,再覆写Void doInBackground方法,在该函数中写要执行的可能产生阻碍的操作。执行该线程在主线程中使用该类的一个对象的excute方法。
onPreExecute 该方法运行在UI线程中,可以对一些UI控件进行操作
doInBackground 该方法并不运行在UI线程中,所以不能对UI控件进行修改
在该方法内可以调用publishProgress(i)发布一些更新到UI线程。
onProgressUpdate (i)该方法在UI线程中,可实现更新(如修改进度条),publishProgress的参数就是传到这里。
onPostExecute 该方法在doInBackground 运行之后运行
AsyncTask<A,B,C>
C doInBackground (A...Param) A是参数类型,...的意思是可以传入多个A类型的数,Param是一个数组,保存参数。C是返回值类型
onProgressUpdate(B)