adnroid 消息机制:
由于子线程(如:Timer)不能对 主线程(MainActivity)的组件进行操作,要用到Handler 并复写其内部的Handler Message () 这个方法来对子线程传来消息进行操作。
1.创建Handler 对象并且复写起HandlerMessage()方法。
2.在子线程创建Message对象,并设置好其相关属性。
3.在子线程调用handler.sendMessage ()方法,发送消息。
4.主线程Handler对象接收到消息后!会在HandlerMessage() 方法中处理
以下内容:
1. Message消息,理解为线程间通讯的数据单元。例如后台线程在处理数据完毕后需要更新UI,则可发送一条包含更新信息的Message给UI线程。
2. Message Queue消息队列,用来存放通过Handler发布的消息,按照先进先出执行。
3. HandleHandler是Message的主要处理者,负责将Message添加到消息队列以及对消息队列中的Message进行处理。
4. Looper循环器,扮演Message Queue和Handler之间桥梁的角色,循环取出Message Queue里面的Message,并交付给相应的Handler进行处理。
5. 线程UI thread 通常就是main thread,而Android启动程序时会替它建立一个Message Queue。
每一个线程里可含有一个Looper对象以及一个MessageQueue数据结构。在你的应用程序里,可以定义Handler的子类别来接收Looper所送出的消息。
消息机制的具体流程:
1.在线程中创建Looper对象,创建对象通过Looer.prepare()方法(或者Looper looper = Looper.getMainLooper();)来创建;
----->创建对象会同时创建出looper对象,和MessageQueue对象 mQueue。
----->mQueue不为空时,马上调用enqueueMessage()方法,把消息添加到消息队列中并进行处理。
2.再创建handler = Handler(looper);来创建Handler对象。
----->通过handler.sendMessage ()方法,把消息添加到消息队列中,消息队列有消息就会马上进行处理。
2运行Looper.loop()方法