本文主要介绍Android的Handler的使用方法。Handler可以发送Messsage和Runnable对象到与其相关联的线程的消息队列。每个Handler对象与创建它的线程相关联,并且每个Handler对象只能与一个线程相关联。

Handler一般有两种用途:1)执行计划任务,你可以再预定的实现执行某些任务,可以模拟定时器。2)线程间通信。在Android的应用启动时,会创建一个主线程,主线程会创建一个消息队列来处理各种消息。当你创建子线程时,你可以再你的子线程中拿到父线程中创建的Handler对象,就可以通过该对象向父线程的消息队列发送消息了。由于Android要求在UI线程中更新界面,因此,可以通过该方法在其它线程中更新界面。
◆ 通过Runnable在子线程中更新界面的例子

○ 在onCreate中创建Handler
public class HandlerTestApp extends Activity {
Handler mHandler;
TextView mText;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mHandler = new Handler();//创建Handler
mText = (TextView) findViewById(R.id.text0);//一个TextView
}
○ 构建Runnable对象,在runnable中更新界面,此处,我们修改了TextView的文字.此处需要说明的是,Runnable对象可以再主线程中创建,也可以再子线程中创建。我们此处是在子线程中创建的。
Runnable mRunnable0 = new Runnable()
{
@Override
public void run() {
// TODO Auto-generated method stub
mText.setText("This is Update from ohter thread, Mouse DOWN");
}
};

○ 创建子线程,在线程的run函数中,我们向主线程的消息队列发送了一个runnable来更新界面。

private void updateUIByRunnable(){
new Thread()
{
//Message msg = mHandler.obtainMessage();
public void run()
{

//mText.setText("This is Update from ohter thread, Mouse DOWN");//这句将抛出异常
mHandler.post(mRunnable0);
}
}.start();

}

◆ 用Message在子线程中来更新界面

用Message更新界面与Runnable更新界面类似,只是需要修改几个地方。
○ 实现自己的Handler,对消息进行处理

private class MyHandler extends Handler
{

@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch(msg.what)
{
case UPDATE://在收到消息时,对界面进行更新
mText.setText("This update by message");
break;
}
}
}

○ 在新的线程中发送消息
private void updateByMessage()
{
//匿名对象
new Thread()
{
public void run()
{
//mText.setText("This is Update from ohter thread, Mouse DOWN");

//UPDATE是一个自己定义的整数,代表了消息ID
Message msg = mHandler.obtainMessage(UPDATE);
mHandler.sendMessage(msg);
}
}.start();
}

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yangpeng98/archive/2010/05/26/5625955.aspx

更多相关文章

  1. android 使用asynctask结合fragment更新UI(另附线程池管理示例)
  2. android采用MVP漫画APP、适配刘海屏、小黄车主界面、录音波浪动
  3. [分享]android 人机界面指南(androdi设计规范)
  4. Android中Handler的线程间通讯原理
  5. android UI 单线程模型
  6. Android UI设计(引导界面):ViewPager之基本用法
  7. Android手机可返回主界面的可移动浮动小窗口

随机推荐

  1. Android之查找apk包名和启动入口类
  2. Android远程数据库通信实现
  3. 使用android studio 报错 undefined refe
  4. Android 桌面组件【widget】初探
  5. Android系统级深入开发输入系统
  6. IOS录制的视频在Android播放异常的问题
  7. 源码角度分析Android的事件输入系统(input
  8. android bitmap 缓存实现(OOM)
  9. Android中的服务有几种,具体实现步骤,这几
  10. 傻瓜式建立数据库,高效数据库操作代码的编