Handler与Message
来源:互联网 发布:淘宝刷单 php源码 编辑:程序博客网 时间:2024/05/13 12:26
Handler与Message
private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.arg1 == 0) { mTv.setText("收到消息"); } } }; public void myClick(View view) { new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(6000); Message msg = new Message(); // 给消息携带信息 msg.arg1 = 0; // 使用Handler发送消息通知主线程更新 handler.sendMessage(msg); } catch (InterruptedException e) { e.printStackTrace(); } } }).start(); }
单线程消息处理队列
生产者消费者模式
功能
一个线程处理所有的任务,队列中保存待处理的任务
例子: 单任务的下载
Main线程
单线程消息队列需要的角色
线程 处理消息 Thread
消息 封装信息 Message
消息队列 按顺序保存消息 MessageQueue
处理者 线程间发送消息 Handler
轮询消息队列 从消息队列中取消息给线程执行 Looper
public class MainActivity extends AppCompatActivity { private Handler mHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initMessageQueue(); } public void myClick(View view) { //Message msg = new Message(); // 也可以从消息池中获取消息对象 Message msg = mHandler.obtainMessage(); msg.arg1 = new Random().nextInt(5) + 1; // 发送消息 mHandler.sendMessage(msg); } private void initMessageQueue() { //开启线程 new LooperThread().start(); } class LooperThread extends Thread { @Override public void run() { super.run(); // 创建Looper与MessageQueue Looper.prepare(); // Handler执行在哪条线程取决于构造方法中的参数 // 如果什么都没传默认工作在创建Handler的那条线程 // Looper.myLooper()可以获得当前Looper的对象 mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); Log.e("收到消息=", msg.arg1 + ""); } }; // 开始轮询 Looper.loop(); } }}
0 0
- 通过handler与message
- handler与message(三)
- handler与Message使用
- Android--Handler与Message
- Handler与Message
- Handler与Message
- Android:Message、Handler、Message Queue与Looper
- AndroidのHandler与Message
- handler与message(二)
- Handler、Looper、Message与HandlerThread
- 消息机制--Message.Handler与Looper(1)
- 消息机制--Message.Handler与Looper(2)
- Handler,MessageQueue,Runnable,Message与Looper
- 浅析android中handler与Message(一)
- android中简单的Handler与Message
- handler.obtainMessage()与Message.obtain()的区别
- android runOnUiThread与handler message的区别
- Handler、Looper与message消息机制
- UVa: 133
- makefile通配符
- *** error 65: access violation at 0x68014802 : no 'write' permission
- Subsets II
- 程序员面试金典: 9.9 递归和动态规划 9.2机器人走路的方式_避免禁区
- Handler与Message
- 【课程笔记】python建模
- 并行方法
- virtualbox的虚拟磁盘不够用了怎么办呢?
- C++,C#,java中类的访问权限修饰的区别
- 基于SpringBoot + Mybatis实现SpringMVC Web项目【原创】
- UVa 489: Hangman Judge
- 关于C语言define宏定义字符串常量
- 最优化学习笔记(十七)——拟牛顿法(3)