异步任务机制,可以在任务结束后更新UI。
AsyncTask一般步骤
1、execute(Params… params):执行异步任务,并可以传值。
2、onPreExecute():调用execute方法后,立即执行此方法,可以写一些初始化操作。
3、doInBackground(Params… params):执行比较耗时的操作,比如网络请求,在此处可以调用publishProgress(Progress… values),来更新进度信息。
4、onProgressUpdate(Progress… values):调用publishProgress(),后方法被执行,可以更新UI中的进度信息。
5、onPostExecute(Result result):当任务执行成功后,返回信息,执行此方法,在此处进行更新UI的操作。
其他:
当执行cancel()方法时,会执行onCancelled()方法。此方法不会销毁线程,会将任务执行完成,但是不会执行onPostExecute方法。可以参考下面文章
译文:Android中糟糕的AsyncTask
http://droidyue.com/blog/2014/11/08/bad-smell-of-asynctask-in-android/
同时也有一些替代的方案,例如:
RxJava
https://asce1885.gitbooks.io/android-rd-senior-advanced/content/index.html