如何在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进行异步操作

android 开发之AsyncTask

Android开发学习之路--异步消息Handler,Message,Looper和AsyncTask之初体验

Android -- 关闭AsyncTask(异步任务)