asynctask-Asynctask更新UI的问题?

问题描述

Asynctask更新UI的问题?

子线程不能更新UI,但是Asynctask能更新UI,是为什么?

解决方案

你可以看下AsyncTask的源码,AsyncTask必须在UI线程中使用,AsyncTask里面有一段new Handler的过程,然后里面的线程池调用玩doInBackground后会用这个handler下去发送消息在ui线程中调用onPostExecute

解决方案二:

安卓要求更新ui在子线程,由于Asynctask开辟子线程,所以可以

解决方案三:

他更新UI也是在主线程的回调里面更新UI

解决方案四:

使用AsyncTask在子线程中更新UI
Android 异步更新UI----AsyncTask

解决方案五:

AsyncTask不是子线程的呀

时间: 2024-10-26 23:25:54

asynctask-Asynctask更新UI的问题?的相关文章

使用AsyncTask异步更新UI界面及原理分析

概述: AsyncTask是在Android SDK 1.5之后推出的一个方便编写后台线程与UI线程交互的辅助类.AsyncTask的内部实现是一个线程池,所有提交的异步任务都会在这个线程池中的工作线程内执行,当工作线程需要跟UI线程交互时,工作线程会通过向在UI线程创建的Handler传递消息的方式,调用相关的回调函数,从而实现UI界面的更新.AsyncTask抽象出后台线程运行的五个状态,分别是:1.准备运行,2.正在后台运行,3.进度更新,4.完成后台任务,5.取消任务,对于这五个阶段,A

Android 在其他线程中更新UI线程的解决方法_Android

方法一:Activity.runOnUiThread(Runnable )(经验之道: 这个最好用, 凡是要刷新页面的地方,Activity.runOnUiThread( new Runnable()  { public void run(){更新UI}}); 方法二:子线程调用Handler的sendMessage(message)发送事件. 复制代码 代码如下: mHandler = new Handler() {     @Override     public void handleMe

Android异步更新UI的四种方式_Android

大家都知道由于性能要求,android要求只能在UI线程中更新UI,要想在其他线程中更新UI,大致有4种方式,下面分别使用四种方式来更新一个TextView.1.使用Handler消息传递机制 package com.example.runonuithreadtest; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.widget.TextView;

更新ui-求指点,Handler更新UI线程问题

问题描述 求指点,Handler更新UI线程问题 public Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); switch (msg.what) { case 0x123: one.setImageResource(imageIds[currentIm

OkHttp3几个简单的例子和在子线程更新UI线程的方法

okHttp用于android的http请求.据说很厉害,我们来一起尝尝鲜.但是使用okHttp也会有一些小坑,后面会讲到如何掉进坑里并爬出来. 首先需要了解一点,这里说的UI线程和主线程是一回事儿.就是唯一可以更新UI的线程.这个只是点会在给okHttp填坑的时候用到.而且,这个内容本身在日常的开发中也经常用到,值得好好学一学. okHttp发起同步请求 第一个列子是一个同步请求的例子. private void performSyncHttpRequest() { OkHttpClient

ui-Android 更新UI 耗时问题

问题描述 Android 更新UI 耗时问题 假如现在我得到了某个List,里面有1000个字符串,然后我想我在主线程中按下某个Button之后,把它们都动态地加载到UI上来,完全是用代码动态添加的布局,然后执行的时候发现有点耗时. 现在有两个问题: 1.有没有什么机制可以让它加载地更快,因为发现更新UI的语句只能在主线程执行,但是耗时的本身就是这些语句 2.如果一定得耗时,我想在加载的时候显示一个progressDialog,更新UI语句全在主线程一个foreach()循环里,我在foreac

详解Android中OkHttp3的例子和在子线程更新UI线程的方法

okHttp用于android的http请求.据说很厉害,我们来一起尝尝鲜.但是使用okHttp也会有一些小坑,后面会讲到如何掉进坑里并爬出来. 首先需要了解一点,这里说的UI线程和主线程是一回事儿.就是唯一可以更新UI的线程.这个只是点会在给okHttp填坑的时候用到.而且,这个内容本身在日常的开发中也经常用到,值得好好学一学. okHttp发起同步请求 第一个列子是一个同步请求的例子. private void performSyncHttpRequest() { OkHttpClient

Android异步更新UI的四种方式

大家都知道由于性能要求,android要求只能在UI线程中更新UI,要想在其他线程中更新UI,大致有4种方式,下面分别使用四种方式来更新一个TextView. 1.使用Handler消息传递机制 package com.example.runonuithreadtest; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.widget.TextView;

详解android异步更新UI的几种方法

前言 我们知道在Android开发中不能在非ui线程中更新ui,但是,有的时候我们需要在代码中执行一些诸如访问网络.查询数据库等耗时操作,为了不阻塞ui线程,我们时常会开启一个新的线程(工作线程)来执行这些耗时操作,然后我们可能需要将查询到的数据渲染到ui组件上,那么这个时候我们就需要考虑异步更新ui的问题了. android中有下列几种异步更新ui的解决办法: Activity.runOnUiThread(Runnable) View.post(Runnable) long) View.pos