Android消息处理机制实现同步效果
16lz
2021-12-04
1.了解Android消息处理机制
1.1关键名词
Message:消息的表示
MessageQueue:消息队列
Looper:消息循环,用于循环取出消息
Handler:消息处理,消息循环从消息队列中取出消息后要对消息进行处理
1.2参考:http://www.cnblogs.com/angeldevil/archive/2013/09/29/3340644.html
2.使用Android消息处理机制
参考:http://blog.csdn.net/toyuexinshangwan/article/details/8597237
3.Android消息处理机制实现同步效果
由于Android消息处理机制实际是采用异步实现的,如果实现同步效果,可以在工作线程中添加对消息队列的消息检查来判断信息是否已被处理,若未处理则不进行下一步操作,否则进行下一步操作。
4.源码
package com.example.handlertest;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.app.Activity;import android.view.Menu;import android.widget.TextView;public class MainActivity extends Activity { private int i = 0; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView)findViewById(R.id.tv); new Thread(new MyThread()).start(); } private Handler h = new Handler(){ public void handleMessage(Message msg) { switch (msg.what) { case 0: System.out.println("msg: " + i++); tv.setText("i :" + i); break; default: break; } }; }; class MyThread implements Runnable{ @Override public void run() { // TODO Auto-generated method stub while(true){ //判断上次消息是否被处理完成 if(!h.hasMessages(0)){ System.out.println("thread: " + i++); h.sendEmptyMessage(0); } } } }}
5总结:handler可视为对消息的处理者,Looper是在子线程要创建该线程的消息队列,在主线程(UI线程)默认已创建消息队列。采用obtainMessage来获取Message,Message使用完后系统会调用recycle回收,比new Message方式节省内存。
更多相关文章
- android的线程特点
- Android(安卓)Activity总结
- Android中Message机制的灵活应用
- Android中Message机制的灵活应用(一)
- Android(安卓)Studio TV开发教程(一)处理电视硬件
- Android(安卓)Display System --- Surface Flinger
- 学习 Android(安卓)Handler 消息机制需要注意这些问题!
- Android(安卓)Java层 Looper 机制
- android发现之旅之媒体按键(耳机按键播放暂停键等)处理过程