`
494078416
  • 浏览: 81603 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

Android消息处理机制②

 
阅读更多

内容回顾:

  (1)UI thread 通常就是main thread,而Android启动程序时会替它建立一个MessageQueue。

  (2)当然需要一个Looper对象,来管理该MessageQueue。

  (3)我们可以构造Handler对象来push新消息到Message Queue里;或者接收Looper(从Message Queue取出)所送来的消息。

  (4)线程A的Handler对象可以传递给别的线程,让别的线程B或C等能送讯息来给线程A(存于A的Message Queue里)。

  (5)线程A的Message Queue里的消息,只有线程A所属的对象可以处理。

子线程传递消息给主线程的例子:

 

1 public class Activity2 extends Activity implements OnClickListener{ 2 Button button = null; 3 TextView text = null; 4 MyHandler mHandler = null; 5 Thread thread ; 6 @Override 7 protected void onCreate(Bundle savedInstanceState) { 8 super.onCreate(savedInstanceState); 9 setContentView(R.layout.activity1); 10 button = (Button)findViewById(R.id.btn); 11 button.setOnClickListener(this); 12 text = (TextView)findViewById(R.id.content); 13 } 14 public void onClick(View v) { 15 switch (v.getId()) { 16 case R.id.btn: 17 thread = new MyThread(); 18 thread.start(); 19 break; 20 } 21 } 22 private class MyHandler extends Handler{ 23 public MyHandler(Looper looper){ 24 super(looper); 25 } 26 @Override 27 public void handleMessage(Message msg) {//处理消息 28   text.setText(msg.obj.toString()); 29 } 30 } 31 private class MyThread extends Thread{ 32 @Override 33 public void run() { 34 Looper curLooper = Looper.myLooper(); 35 Looper mainLooper = Looper.getMainLooper(); 36 String msg ; 37 if(curLooper==null){ 38 mHandler = new MyHandler(mainLooper); 39 msg = "curLooper is null"; 40 }else{ 41 mHandler = new MyHandler(curLooper); 42 msg = "This is curLooper"; 43 } 44 mHandler.removeMessages(0); 45 Message m = mHandler.obtainMessage(1, 1, 1, msg); 46 mHandler.sendMessage(m); 47 } 48 } 49 }

 

说明:

Android会自动替主线程建立Message Queue。在这个子线程里并没有建立Message Queue。所以,myLooper值为null,而mainLooper则指向主线程里的Looper。于是,执行到:

mHandler = new MyHandler (mainLooper);此mHandler属于主线程。

mHandler.sendMessage(m);就将m消息存入到主线程的Message Queue里。

mainLooper看到Message Queue里有讯息,就会作出处理,于是由主线程执行到mHandler的handleMessage()来处理消息。

分享到:
评论

相关推荐

    Android 事件处理机制

    Android事件处理机制

    Android消息处理机制

    在Android系统中,消息处理机制是应用程序中进行异步通信和线程间通信的核心组件,主要涉及Handler、Message和Looper三个关键元素。本篇将详细阐述这三个组件的作用、原理及其在实际开发中的应用。 首先,我们来...

    Android的消息处理机制

    ### Android的消息处理机制详解 #### 一、Android消息处理机制概览 在Android开发中,消息处理机制是非常重要的一个组成部分,它确保了应用程序能够在不同线程之间有效地传递数据和指令,尤其是在更新用户界面(UI)...

    Android的消息处理机制--Message,MessageQueue

    ### Android的消息处理机制详解 #### 一、引言 Android应用程序是通过消息驱动的,它借鉴了Windows的消息处理机制,并在此基础上实现了一套适合移动设备的处理机制。本篇文章将详细探讨Android的消息处理机制,...

    Android 消息处理机制之一

    【Android 开发】: Android 消息处理机制之 Handler 与 Message http://blog.csdn.net/ahuier/article/details/17012005

    Android的消息机制

    Android的消息机制,值得学习学习。我读了觉得很不错。 android 有一种叫消息队列的说法,这里我们可以这样理解:假如一个隧道就是一个消息队列,那么里面的每一部汽车就是一个一个消息,这里我们先忽略掉超车等种种...

    Android消息处理机制之Handler 三

    【Android 开发】: Android 消息处理机制之 Handler 中 sendMessage() 源代码剖析 http://blog.csdn.net/ahuier/article/details/17013647

    Android应用程序消息处理机制

    Android应用程序与传统的PC应用程序一样,都是消息驱动的。也就是说,在Android应用程序主线程中,所有函数都是在一个...掌握Android应用程序消息处理机制,有助于我们熟练地使用同步和异步编程,提高程序的运行性能

    Android消息机制

    Android消息机制是指Android系统中的线程间通信机制,该机制负责处理事件的...Android通过这些组件的组合,实现了异步消息处理机制,从而使得在进行耗时操作时,UI线程不会被阻塞,确保了应用界面的流畅性和响应性。

    Android_Handler消息处理机制

    在Android系统中,Handler、Message和Looper构成了一个关键的异步通信机制,即Handler消息处理机制。这个机制允许Android应用程序在不同的线程间传递消息,处理UI更新等操作,是多线程编程中的重要组成部分。下面...

    Android中的消息处理实例之一

    本文介绍了Android中的消息处理机制,给出了Android消息处理中的几个重点类Handler、Message、MessageQueue、Looper、Runnable、Thread的详细介绍,提供了两个消息处理的实例代码,并深入Android源代码分析了使用...

    Android应用程序输入事件处理机制

    在Android应用程序中,有一类...这个PPT讲Android应用程序输入事件的分发和处理过程,主要涉及到输入管理InputManager、输入事件监控线程InputReader、输入事件分发线程InputDispatcher,以及应用程序主线程消息循环。

    android多线程机制

    Android多线程机制是Android开发中非常重要的一部分,尤其是在处理耗时任务(如网络请求、大数据处理等)时,避免阻塞UI线程,保证应用程序的流畅性和响应性。本文将详细介绍Android多线程的基本原理及其核心组成...

    android 消息机制

    从源码出发,详细的解析了android中的消息机制,分析清楚Looper和MessageQueue以及Handler三者之间的关系。

    从现实生活中理解android 线程消息机制

    在Android系统中,线程消息机制是一个核心概念,它确保了应用程序的高效运行和用户体验的流畅性。这个机制主要由三部分组成:Handler、Looper和Message Queue。下面我们将从现实生活中的例子来深入理解这个机制,并...

    深入剖析Android消息机制.pdf

    Android消息机制是Android应用程序开发中的核心机制之一,它涉及线程间通信(IPC)和线程内部的事件驱动,是实现异步消息处理的重要方式。Android消息机制主要基于Handler、Looper和MessageQueue这三个组件协同工作...

    〔原创〕Android消息传递机制(总结)

    在Android系统中,消息传递机制是应用程序中各个组件之间通信的核心途径,对于理解和优化应用程序的性能至关重要。本文将深入探讨Android消息传递机制,基于提供的标题和描述,我们将重点关注这一主题。 首先,...

    Android消息机制资料及源码

    Android的消息机制是Android系统中处理异步通信和线程间通信的核心组件,它涉及到Handler、Looper和Message等关键概念。这个压缩包包含了源码示例(MessageExample)和三篇PDF文档,帮助深入理解这一机制。 首先,...

Global site tag (gtag.js) - Google Analytics