handler——handler的使用例子
来源:互联网 发布:草帽海贼团第十人 知乎 编辑:程序博客网 时间:2024/06/06 21:45
转自http://blog.csdn.net/fdaopeng/article/details/7863840
Android UI操作并不是线程安全的,所以无法在子线程中更新UI。但Andriod提供了几种方法,可以在子线程中通知UI线程更新界面:
Activity.runOnUiThread( Runnable ) View.post( Runnable ) View.postDelayed( Runnable, long ) Handler
比较常用的是通过Handler,用Handler来接收子线程发送的数据,并用此数据配合主线程更新UI。那么,只要在主线程中创建Handler对象,在子线程中调用Handler的sendMessage方法,就会把消息放入主线程的消息队列,并且将会在Handler主线程中调用该handler的handleMessage方法来处理消息。
package com.superonion; import android.app.Activity; import android.os.Bundle; import android.os.Message; import android.util.Log; import android.os.Handler; public class MyHandler extends Activity { static final String TAG = "Handler"; Handler h = new Handler(){ public void handleMessage (Message msg) { switch(msg.what) { case HANDLER_TEST: Log.d(TAG, "The handler thread id = " + Thread.currentThread().getId() + "\n"); break; } } }; static final int HANDLER_TEST = 1; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(TAG, "The main thread id = " + Thread.currentThread().getId() + "\n"); new myThread().start(); setContentView(R.layout.main); } class myThread extends Thread { public void run() { Message msg = new Message(); msg.what = HANDLER_TEST; h.sendMessage(msg); Log.d(TAG, "The worker thread id = " + Thread.currentThread().getId() + "\n"); } } }
以上代码中,Handler在主线程中创建后,子线程通过sendMessage()方法就可以将消息发送到主线程中,并在handleMessage()方法中处理。
0 0
- handler——handler的使用例子
- Handler源码解读——handler使用时的注意事项
- andrid 使用handler制作的定时器例子
- android的Handler 例子
- handler——handler机制的原理
- android——Handler的使用
- android——Handler的使用
- Android 开发 —— Handler的使用
- android——Handler的使用
- Android 开发 —— Handler的使用
- handler例子
- Handler例子
- handler——Handler详解
- Thread+Handler的简单例子
- 一个关于looper和handler的好玩例子(子线程中使用handler)
- Android笔记--handler的使用的一个例子
- Android初学习 - Handler使用的简单例子
- Handler的使用
- 继承关系的对象创建过程
- Record
- 视觉SLAM漫谈(二):图优化理论与g2o的使用
- centos6.5下面编译安装mysql5.7.10版本
- NAT64与DNS64
- handler——handler的使用例子
- ansible学习一(ansible安装)
- java获取JVM对象实例的个数和占用空间大小
- 五十道编程小题目 --- 13 java
- Gradle project sync failed please fix your project and try again
- Light OJ:1006 Hex-a-bonacci(水题)
- Java基础知识
- 软件工程—软件设计
- 视觉SLAM漫谈 (三): 研究点介绍