如何在Android开发中用AsyncTask异步更新UI界面
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Android开发中用AsyncTask异步更新UI界面相关的知识,希望对你有一定的参考价值。
1本次的异步处理的一种方式AsyncTask,其实它的本质是一个线程池,所有提交的异步任务都会在这个线程池中的工作线程内执行,当工作线程需要跟UI线程交互时,工作线程会通过向在UI线程创建的Handler传递消息的方式,调用相关的回调函数,从而实现UI界面的更新。
2
AsyncTask抽象出后台线程运行的五个状态,分别是:1、准备运行,2、正在后台运行,3、进度更新,4、完成后台任务,5、取消任务,对于这五个阶段,AsyncTask提供了五个回调函数:其中,准备运行:onPreExecute(),该回调函数在任务被执行之后立即由UI线程调用。这个步骤通常用来建立任务,在用户接口(UI)上显示进度条;
3
doInBackground(Params...),该回调函数由后台线程在onPreExecute()方法执行结束后立即调用。通常在这里执行耗时的后台计算。计算的结果必须由该函数返回,并被传递到onPostExecute()中。在该函数内也可以使用publishProgress(Progress...)来发布一个或多个进度单位(unitsof progr ess)。这些值将会在onProgressUpdate(Progress...)中被发布到UI线程;
4
完成后台任务:onPostExecute(Result),当后台计算结束后调用。后台计算的结果会被作为参数传递给这一函数;
5
最后在程序中启动该异步代码; 参考技术A 所用工具原料为:Eclipse、SDK
1、本次的异步处理的一种方式AsyncTask,其实它的本质是一个线程池,所有提交的异步任务都会在这个线程池中的工作线程内执行,当工作线程需要跟UI线程交互时,工作线程会通过向在UI线程创建的Handler传递消息的方式,调用相关的回调函数,从而实现UI界面的更新。
2、AsyncTask抽象出后台线程运行的五个状态,分别是:1、准备运行,2、正在后台运行, 3、进度更新,4、完成后台任务,5、取消任务,对于这五个阶段,AsyncTask提供了五个回调函数:其中,准备运行:onPreExecute(),该回调函数在任务被执行之后立即由UI线程调用。这个步骤通常用来建立任务,在用户接口(UI)上显示进度条;
3、doInBackground(Params...),该回调函数由后台线程在onPreExecute()方法执行结束后立即调用。通常在这里执行耗时的后台计算。计算的结果必须由该函数返回,并被传递到onPostExecute()中。在该函数内也可以使用publishProgress(Progress...)来发布一个或多个进度单位(unitsof progress)。这些值将会在onProgressUpdate(Progress...)中被发布到UI线程;
4、完成后台任务:onPostExecute(Result),当后台计算结束后调用。后台计算的结果会被作为参数传递给这一函数;
5、最后在程序中启动该异步代码。 参考技术B new AsyncTask<Void, Void, Void>()
@Override
protected Void doInBackground(Void... params)
//TODO 耗时操作,比如网络请求
protected void onPostExecute(Void result)
//TODO 更新ui界面
;
.execute();
在onPostExecute方法里更新就好了,就是异步的
以上是关于如何在Android开发中用AsyncTask异步更新UI界面的主要内容,如果未能解决你的问题,请参考以下文章
安卓Android开发:使用Executor线程池代替AsyncTask进行异步操作
安卓Android开发:使用Executor线程池代替AsyncTask进行异步操作
Android开发学习之路-使用AsyncTask进行异步操作