Android自助餐之AsyncTask
[toc]
耗时操作可以使用AsyncTask
。
创建AsyncTask需要传递三个泛型:Params
、Progress
、Result
。
Params
启动任务执行的输入参数,比如HTTP请求的URLProgress
后台任务执行的百分比Result
后台执行任务最重返回的结果
使用AsyncTask需要重写的方法
doInBackground()
后台执行比较耗时的操作。不能直接操作UI;在执行过程中可以调用publishProgress()来更新任务的进度。
doPlstExcute()
相当于Handler处理UI的方式,可以再这里使用doInBackground方法的到的结果处理UI。在主线程执行。
onProgressUpdate()
可以使用进度条。在主线程执行。
onPreExcute()
在execute被调用后立即执行,一般用来在执行后台任务前对UI做一些标记。
需要注意的
AsyncTask
的实例只能在UI线程中创建。execute()
只能在UI线程中调用。- 不要手动调用:
onPreExecute()
、doInBackground()
、onProgressUpdate()
、onPostExecute()
。 - 一个
AsyncTask
实例只能执行一次。
时间: 2024-10-06 00:28:34