说起Android的AsyncTask,则必须要说到Android中的单线程模型,在Android中只允许UI线程来操作界面,WorkingThread是不允许操作UI的。同时耗时的操作则应尽量放在WorkingThread中来操作,防止阻碍UI线程更新 界面,导致 ANR(Application Not Responding) 异常。这样可以保证UI操作的稳定和流畅,避免造成多线程操作致使UI混乱。
我们可以使用线程池来操作,Android给我们提供了Handler 机制,其实也给我们提供了一个AsyncTask组件。使用线程池来操作的时候,我们需要管理线程,同时需要用handler来发送消息,但是在处理过程中代码过多,显得过于复杂。
AsyncTask 参数构建
AsyncTask是一个抽象类,里面封装有三个泛型参数。通常情况下,我们需要集成这个类来实现功能。
- Params 启动任务执行的输入参数,比如HTTP请求的URL。
- Progress 后台任务执行的百分比。
- Result 后台执行任务最终返回的结果,比如String。
AsyncTask子类回调方法
- doInBackground(Params…): 后台任务,必须重写的方法。
- onPostExecute(Result) 相当于Handler 处理UI的方式,当doInBackground 完成之后,系统会自动调用。
以下方法不是必须复写的
- onProgressUpdate(Progress…) 更新任务的执行进度出发的方法。publishProgress()
- onPreExecute() 执行后台耗时任务前调用!
- onCancelled() 用户调用取消时,要做的操作
时间: 2024-10-07 11:21:57