Android Looper中的MessageQueue消息处理机制
来源:互联网 发布:linux查询log日志 编辑:程序博客网 时间:2024/05/22 03:33
一个线程中只有一个Looper,一个MessageQueue。handler可以有多个,然后handler postDelayed(),或者sendMessageDelayed()的时候,那消息队列根据队列的先进先出原则,那其他的Message会不会因此而延迟呢?所以就有了下面的测试:
public class LooperMessageQueueActivity extends AppCompatActivity { private TextView txt; private Handler h1; private Handler h2; private Handler h3; private Handler h4; private Handler h5; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_looper_message_queue); init(); } private void init() { txt = (TextView) findViewById(R.id.text); h1 = new Handler(); h2 = new Handler(); h3 = new Handler(); h4 = new Handler(); h5 = new Handler(); } public void OnClicked(View view) { int i = 1; buildThread(h1, i++); buildThread(h2, i++); buildThread(h3, i++); buildThread(h4, i++); buildThread(h5, i++); } private void buildThread(final Handler h, final int i) { new Thread(new Runnable() { @Override public void run() { Log.d("Edgar", "t" + i); h.postDelayed(new Runnable() { @Override public void run() { txt.setText(txt.getText() + "t" + i + "回来啦!\n"); Log.d("Edgar", "t" + i + "回来啦!\n"); } }, 5000 * (5 - i)); } }).start(); }}
然后出来的结果是:
可以看到log出来的时间,是先把后面的显示出来,这与队列的”先进先出”相悖。从结果上看是并发显示出来的。
为什么会出现这个现象呢?这个需要深挖.
由于看不到MessageQueue.enqueueMessage(msg, uptimeMillis)
里面的源码,所以这个日后再分析
0 0
- Android Looper中的MessageQueue消息处理机制
- Android消息处理机制:Looper,MessageQueue,Handler
- 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue
- 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue
- 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue
- 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue
- 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue
- 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue
- 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue
- 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue
- 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue
- 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue
- 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue
- 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue
- Android消息处理机制(Handler、Looper、MessageQueue与Message)
- Android消息处理机制(Looper,Handler,MessageQueue笔记)
- 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue
- 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue
- servlet跳转页面两种方式
- Runtime Message Forwarding
- 个人随笔之---开发感悟
- spark性能调优:开发调优
- 生成六位不相同的密码
- Android Looper中的MessageQueue消息处理机制
- Redis自增序列
- Excel多行转多列
- SpringMVC4零配置--web.xml
- Python转义字符空格字符
- 编程小练习
- dataGrid中的行编辑功能
- Android 编程下 Touch 事件的分发和消费机制
- json入门指导一