admin 管理员组文章数量: 1184232
2024年2月25日发(作者:手机查看网站源码)
handler中sendmessage和obtainmessage的用法
在Android的Handler中,sendMessage和obtainMessage都是用于实现线程间通信和消息传递的重要方法。在Handler中,使用sendMessage方法可以将消息发送到消息队列中,而使用obtainMessage方法可以从消息池中获取一个新的Message对象,用于存储消息的数据。
1. sendMessage方法的用法:
sendMessage方法用于将一个消息发送到消息队列中,接受一个Message对象作为参数,可以通过这个对象来传递消息的数据和标识。sendMessage方法的语法如下:
```java
boolean sendMessage(Message msg);
boolean sendMessageAtTime(Message msg, long uptimeMillis);
boolean sendMessageDelayed(Message msg, long delayMillis);
boolean sendMessageAtFrontOfQueue(Message msg);
```
- sendMessage方法将消息立即发送到消息队列中,而sendMessageAtTime方法和sendMessageDelayed方法可以指定消息的发送时间,delayMillis参数表示消息的延迟发送时间,uptimeMillis参数则表示消息的精确发送时间。
- sendMessageAtFrontOfQueue方法会将消息添加到队列的前面,优先处理。
2. obtainMessage方法的用法:
obtainMessage方法用于从消息池中获取一个新的Message对象,可以用于存储需要传递的数据和标识。obtainMessage方
法的语法如下:
```java
Message obtainMessage();
Message obtainMessage(int what);
Message obtainMessage(int what, Object obj);
Message obtainMessage(int what, int arg1, int arg2);
Message obtainMessage(int what, int arg1, int arg2, Object obj);
```
- obtainMessage方法可以根据需要指定消息的what字段,用于标识不同的消息类型。
- obtainMessage方法还可以附带传递参数,通过arg1和arg2可以传递两个整型参数,通过obj参数可以传递一个Object对象。
3. 示例代码:
下面是一个使用Handler的示例代码,演示了sendMessage和obtainMessage的用法:
```java
class MyHandler extends Handler {
@Override
public void handleMessage(Message msg) {
switch () {
case 1001:
// 处理消息类型为1001的消息
String data = (String) ;
//
break;
case 1002:
// 处理消息类型为1002的消息
int arg1 = 1;
int arg2 = 2;
//
break;
default:
Message(msg);
}
}
}
// 在其他地方使用Handler发送消息
MyHandler handler = new MyHandler();
Message message = Message(1001, "Hello,
Handler!"); // 获取Message对象,并传递消息类型和数据
ssage(message); // 发送消息到消息队列
// 在其他地方使用Handler处理消息
MyHandler handler = new MyHandler();
ssageDelayed(Message(1002, 10,
20), 1000); // 延迟1秒发送消息
```
以上就是sendMessage和obtainMessage方法的用法,它们是Android中实现线程间通信和消息传递的重要方法,可以很方便地在不同的线程之间传递数据和消息。
版权声明:本文标题:handler中sendmessage和obtainmessage的用法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1708811803a531895.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论