如何在Android开发中用AsyncTask异步更新UI界面
2016-07-15 · 百度知道合伙人官方认证企业
异步处理的一种方式AsyncTask,其实它的本质是一个线程池,所有提交的异步任务都会在这个线程池中的工作线程内执行,当工作线程需要跟UI线程交互时,工作线程会通过向在UI线程创建的Handler传递消息的方式,调用相关的回调函数,从而实现UI界面的更新。
AsyncTask抽象出后台线程运行的五个状态,分别是:a、准备运行,b、正在后台运行,c、进度更新,d、完成后台任务,e、取消任务,对于这五个阶段,AsyncTask提供了五个回调函数:其中,准备运行:onPreExecute(),该回调函数在任务被执行之后立即由UI线程调用。这个步骤通常用来建立任务,在用户接口(UI)上显示进度条;
doInBackground(Params...),该回调函数由后台线程在onPreExecute()方法执行结束后立即调用。通常在这里执行耗时的后台计算。计算的结果必须由该函数返回,并被传递到onPostExecute()中。在该函数内也可以使用publishProgress(Progress...)来发布一个或多个进度单位(unitsof progress)。这些值将会在onProgressUpdate(Progress...)中被发布到UI线程;
完成后台任务:onPostExecute(Result),当后台计算结束后调用。后台计算的结果会被作为参数传递给这一函数;
最后在程序中启动该异步代码;