Android异步更新UI的方式之使用Handler消息传递机制

由于性能要求,android要求只能在UI线程中更新UI,要想在其他线程中更新UI,给大家介绍一种方式:使用Handler消息传递机制。

下面用这种方式更新一个TextView:

package com.example.runonuithreadtest;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView tv;
Handler handler = new Handler()
{
  public void handleMessage(android.os.Message msg) {
   if(msg.what==0x123)
   {
    tv.setText("更新后的TextView");
   }
  };
};
@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  tv = (TextView) findViewById(R.id.tv);
  new MyThread().start();
}
class MyThread extends Thread
{
  @Override
  public void run() {
   //延迟两秒更新
   try {
    Thread.sleep(2000);
   } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   handler.sendEmptyMessage(0x123);
  }
}
} 

当然对APP的性能测试,我比较常用的是这个平台:www.ineice.com

时间: 2024-10-26 13:00:23

Android异步更新UI的方式之使用Handler消息传递机制的相关文章

Android异步更新UI的方式之使用Handler的post(Runnabel r)方法

由于性能要求,android要求只能在UI线程中更新UI,要想在其他线程中更新UI,给大家介绍一种方式:使用Handler的post(Runnabel r)方法 下面用这种方式更新一个TextView: package com.example.runonuithreadtest;  import android.app.Activity;  import android.os.Bundle;  import android.os.Handler;  import android.widget.T

Android异步更新UI的方式之使用AsyncTask异步任务

由于性能要求,android要求只能在UI线程中更新UI,要想在其他线程中更新UI,给大家介绍一种方式:使用AsyncTask异步任务. 下面用这种方式更新一个TextView: 注:更新UI的操作只能在onPostExecute(String result)方法中. package com.example.runonuithreadtest;  import android.app.Activity;  import android.os.AsyncTask;  import android.

Android异步更新UI的方式之使用runOnUiThread(action)方法

由于性能要求,android要求只能在UI线程中更新UI,要想在其他线程中更新UI,给大家介绍一种方式:使用runOnUiThread(action)方法 下面用这种方式更新一个TextView: 1.  package com.example.runonuithreadtest; 2.  import android.app.Activity; 3.  import android.os.Bundle; 4.  import android.widget.TextView; 5.  publi

Android多线程更新UI的方式

Android下,对于耗时的操作要放到子线程中,要不然会残生ANR,本次我们就来学习一下Android多线程更新UI的方式. 首先我们来认识一下anr: anr:application not reponse:应用程序无响应 主线程:UI线程 anr产生的原因:主线程需要做很多重要的事情,响应点击事件,更新ui,如果在主线程里面阻塞时间过久,应用程序就会无响应,为了避免应用程序出现anr,所有的耗时的操作,都应该放在子线程中执行. 认识了anr后,我们就来学习一下怎样在Android下开启多线程

android异步更新UI界面的方法

在android平台下,进行多线程编程时,经常需要在主线程之外的一个单独的线程中进行某些处理,然后更新用户界面显示.但是,在主线线程之外的线程中直接更新页面显示的问题是:系统会报这个异常,android.view.viewroot$calledfromwrongthreadexception: only the original thread that created a view hierarchy can touch its views. (只有原始创建这个视图层次(view hierach

android异步更新UI的几种方法

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

Android中多线程编程(三)Handler更新UI的方式

Handler更新UI的方式和原因以及遇到的问题 1.方式: 只能通过Handler来更新UI. 代码如下: package com.chengdong.su.handlerdemo; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; import android.os.Message; import android.

Android异步更新

大家都知道由于性能要求,android要求只能在UI线程中更新UI,要想在其他线程中更新UI,我大致总结了4种方式,欢迎补充纠正: 使用Handler消息传递机制; 使用AsyncTask异步任务; 使用runOnUiThread(action)方法; 使用Handler的post(Runnabel r)方法; 下面分别使用四种方式来更新一个TextView. 1.使用Handler消息传递机制 public class MainActivity extends Activity { priva

Android异步处理二:使用AsyncTask异步更新UI界面

Android异步处理二:使用AsyncTask异步更新UI界面 - lzc的专栏 - 博客频道 - CSDN.NET 在<Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面>中,我们使用Thread+Handler的方式实现了异步更新UI界面,这一篇中,我们介绍一种更为简洁的实现方式:使用AsyncTask异步更新UI界面. 概述: AsyncTask是在Android SDK 1.5之后推出的一个方便编写后台线程与UI线程交互的辅助类.AsyncTask的