消息机制和UI处理
来源:互联网 发布:梦幻西游外部网络错误 编辑:程序博客网 时间:2024/05/04 13:06
Android中需要在主线程中处理UI问题。通过Handler处理消息。
具体说明见示例。
LooperThread.java
class LooperThread extends Thread { public Handler mHandler; public TextView tv; public LooperThread(TextView tv, Handler mHandler) { this.tv = tv; this.mHandler = mHandler; } @Override public void run() { //子线程的looper不是默认开启的,需要先调用prepare()方法 Looper.prepare(); Log.d("zhty", "thread Thread.currentThread().getId():" + Thread.currentThread().getId()); Log.d("zhty", "prepare"); mHandler = new Handler() { @Override public void handleMessage(Message msg) { //这里会报错// tv.setText("线程的handler不可以处理UI"); Looper.myLooper().quit(); } }; Log.d("zhty", "Looper.myLooper():" + Looper.myLooper()); //就是构造时传入的looper Log.d("zhty", "mHandler.getLooper():" + mHandler.getLooper()); Log.d("zhty", "Looper.getMainLooper():" + Looper.getMainLooper()); //post()的方式.也是封装成message发送到线程的消息队列 mHandler.post(new Runnable() { @Override public void run() { tv.setText("post的方式处理,发送到了消息队列里"); } }); Log.d("zhty", "loop"); //sendMessage()的方式 new Thread(new Runnable() { @Override public void run() { Log.d("zhty", "thread in thread Thread.currentThread().getId():" + Thread.currentThread().getId()); Message msgMessage = new Message(); mHandler.sendMessage(msgMessage); } }).start(); //阻塞的方法,调用quit()方法结束 Looper.loop(); Log.d("zhty", "after loop"); } }
调用方法:
public void handlerTest() { final TextView tv = (TextView) findViewById(R.id.tv); Log.d("zhty", "main Thread.currentThread().getId():" + Thread.currentThread().getId()); //在主线程创建Handler,默认传入的是Looper.getMainLooper Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { tv.setText("主线程的handler可以处理UI"); //主线程的looper不可以执行quit()// Looper.myLooper().quit(); } }; new LooperThread(tv, mHandler).start(); }
1 0
- 消息机制和UI处理
- UI线程和windows消息队列机制
- UI线程和windows消息队列机制
- 安卓UI线程与异步消息处理机制
- windows消息处理机制和VB
- MFC消息映射和处理机制整理
- 消息处理机制:CCmdTarget 和 消息映射表
- 消息处理机制:CCmdTarget 和 消息映射表
- 消息处理机制:CCmdTarget 和 消息映射表
- VC----消息处理机制:CCmdTarget 和 消息映射表
- UI线程和windows消息队列机制(转)
- Android 事件分发机制 和 消息处理机制
- Android之异步处理Handler和消息机制处理
- Android UI消息传递机制
- 消息处理机制
- windows消息处理机制
- windows消息处理机制
- Android 消息处理机制
- C++ Primer 5e chapter 17.1
- NSURLSession的类型(断点续传,开始取消。后台运行)
- Unity_一张图看懂MonoBehaviour的生命周期
- Java实现GZIP压缩
- Leetcode #145 Binary Tree Postorder Traversal
- 消息机制和UI处理
- UIScroll和UIpageControl
- 两个QT入门的例子(Qt Creator)(入门)(例子)
- css sprites——CSS精灵
- struts.xml中的标签及属性详解
- nsstring和int float的相互转换(转)
- 美团前端面试题及答案
- java.lang.IllegalStateException: Missing project All-Projects
- 【读书笔记】iOS-NSString的length