【Android消息处理机制】Handler中sendEmptyMessage与sendMessage的区别和sendMessageAtTime()与sendEmptyMessageDelay()区别
来源:互联网 发布:js判断json是否存在 编辑:程序博客网 时间:2024/04/30 07:41
本文转载自:http://blog.csdn.net/cangchen/article/details/44489023
1、sendEmptyMessage与sendMessage的区别:
sendMessage()允许你处理Message对象(Message里可以包含数据,)。
sendEmptyMessage(int what)只能放数据。其中参数what作用:就类似于ID,处理消息的时候用于区分你send一个0和1,处理的时候就要判断了if(msg.what == 0){}else if(msg.what == 1){}。
其实两者没区别,请看下面Handler的源代码:
/**
* Sends a Message containing only the what value.* * @return Returns true if the message was successfully placed in to the * message queue. Returns false on failure, usually because the* looper processing the message queue is exiting.*/public final boolean sendEmptyMessage(int what){ return sendEmptyMessageDelayed(what, 0);}
就是调用了sendEmptyMessageDelayed()而已,下面看下这个方法:
而sendMessage(Message msg)的实现和上面一样,请看:原来在sendEmptyMessageDelayed中就是构建了一个Message,然后把这个Message的what设置成sendEmptyMessage方法中的What参数即可。一切恍然大悟!
然后,在主线程中,Looper类的loop()通过 调用: msg.target.dispatchMessage(msg),调用Hanler类的dispatchMessage(Message msg)方法,从而在主线程中处理了这个Message.
2、sendMessageAtTime()与sendEmptyMessageDelay()的区别:
函数原型:public boolean sendMessageAtTime (Message msg, long uptimeMillis)Message //不用说 是待发送消息uptimeMillis //sendMessageAtTime,即在确定的时间发送这个消息,这个时间通过这个参数指定这个时间由uptimeMillis()传递这两句是等效的,都是延时1秒将消息加入列队msgHandle.sendMessageAtTime(msg, SystemClock.uptimeMillis()+1000);msgHandle.sendMessageDelayed(msg, 1000)sendMessageAtTime的uptimeMillis是相对系统开机时间的绝对时间,SystemClock.uptimeMillis()是当前开机时间。
0 0
- 【Android消息处理机制】Handler中sendEmptyMessage与sendMessage的区别和sendMessageAtTime()与sendEmptyMessageDelay()区别
- 【Android消息处理机制】Handler中sendEmptyMessage与sendMessage的区别和sendMessageAtTime()与sendEmptyMessageDelay()区别
- 【Android消息处理机制】Handler中sendEmptyMessage与sendMessage的区别和sendMessageAtTime()与sendEmptyMessageDelay()区别
- 【Android消息处理机制】Handler中sendEmptyMessage与sendMessage的区别和sendMessageAtTime()与sendEmptyMessageDelay()区
- android的Handler中sendEmptyMessage与sendMessage的区别
- android的Handler中sendEmptyMessage与sendMessage的区别
- 【移动开发】Handler的sendMessageAtTime()和sendEmptyMessageDelay()区别
- Handler的sendEmptyMessage和sendMessage的区别
- android handler sendEmptyMessage与sendMessage
- sendemptymessage 和sendmessage的区别
- sendEmptymessage 和sendMessage的区别
- sendMessage和sendEmptyMessage的区别
- "AsynchTask和Handler"的区别与用法-Android异步消息处理机制之图文代码详解
- Handler中sendMessage与post的区别
- 【Android】sendMessage与sendEmptyMessage的异同
- Handler 的sendEmptyMessage(int what)和sendMessage(Message msg)的区别?
- Handler 的sendEmptyMessage(int what)和sendMessage(Message msg)有啥区别?
- Handler 的sendEmptyMessage(int what)和sendMessage(Message msg)有啥区别?
- Maven 搭建Springmvc 入门(包括将map转化成json)
- 蛇形填数
- PAT-A1029
- JSON解析/XML解析
- GitHub使用(一)
- 【Android消息处理机制】Handler中sendEmptyMessage与sendMessage的区别和sendMessageAtTime()与sendEmptyMessageDelay()区别
- C语言字符串函数大全
- Problem--116A--Codeforces--Tram
- 白话java设计模式
- 开发板截屏问题
- 算法笔记_061-蓝桥杯练习 字串统计(Java)
- FormBorderStyle.None时,支持改变窗体大小
- BZOJ2101: [Usaco2010 Dec]Treasure Chest 藏宝箱
- C++返回值为对象时复制构造函数不执行怎么办