AsynTask只要几个方法,
- onPreExecute() 该方法将在执行实际的后台操作前被UI thread调用。这个方法只是做一些准备工作,如在界面上显示一个进度条。
- doInBackground(Params...), 将在onPreExecute 方法执行后马上执行,该方法运行在后台线程中。这里将主要负责执行那些很耗时的后台计算工作。
- publishProgress 该方法来更新实时的任务进度。该方法是抽象方法,子类必须实现。
- onProgressUpdate(Progress...), 在publishProgress方法被调用后,UI thread将调用这个方法从而在界面上展示任务的进展情况,可以通过一个进度条进行展示。
- onPostExecute(Result), 在doInBackground 执行完成后,onPostExecute 方法将被UI thread调用,后台的计算结果将通过该方法传递到UI thread.
AsynTask三个参数:
第一个参数:传入doInBackground()方法的参数类型
第二个参数:传入onProgressUpdate()方法的参数类型
第三个参数:传入onPostExecute()方法的参数类型,也是doInBackground()方法返回的类型
注意!!!doInBackground是在子线程中运行 onProgressUpdate是在主线程中运行 onPostExecute在主线程中运行
AsynTask初始化,
execute
方法要在主线程中运行,
不要手动的调用onPreExecute(), onPostExecute(Result),doInBackground(Params...), onProgressUpdate(Progress...)这几个方法
- 一个AsyncTask对象只能执行一次,即只能调用一次execute方法,否则会报运行时异常
ps:AsynTask的串并行问题,没遇到过,不过一片博客分析的挺不错的,可以参考下:
本篇文章参考了下面博客,都挺不错的,大家可以去看看