Android 线程之Message 的使用
来源:互联网 发布:中山大学mba 知乎 编辑:程序博客网 时间:2024/06/06 23:24
Android 线程之Message 的使用
Message 为消息对象,就是记录消息信息的类,用来承载传递的信息,并且将消息传递到消息队列中。
关于message的使用提供了许多重载的方法,如下:
Message msg = Message.obtain();
handler.sendMessage(msg);
分析obtain的源码:
public static Message obtain() {
synchronized (sPoolSync) {
if (sPool != null) {
Message m = sPool;
sPool = m.next;
m.next = null;
sPoolSize--;
return m;
}
}
return new Message();
}
分析可以得出,obtain()方法并不会直接创建一个消息, 而是检查消息池中是否有,有的话直接拿过来使用,否则才会重新创建。这样就提高了资源的利用。
第二种:
Message msg = Message.obtain(handler);
msg.sendToTarget();
public static Message obtain(Handler h) {
Message m = obtain();
m.target = h;
return m;
}
指定一个Handler 对象,在其内部 仍然须执行obtain()返回一个消息对象, msg.sendToTarget(); 实际上也是将当前的消息发送到消息队列中。
也可以在构造方法中指定一次发送多个消息
Message msg = Message.obtain(handler, 33, 44, 555, "hello");
msg.sendToTarget();
也可以发送一个复杂类型的数据:
Bundle bundle = new Bundle();
bundle.putStringArray("wang",
new String[] { "jack", "rose", "tom" });
msg.setData(bundle);
接收消息在handler中的
public void handleMessage(android.os.Message msg) {};
方法中接收消息队列中的消息。
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
int arg1 = msg.arg1;
int arg2 = msg.arg2;
int what = msg.what;
Object result = msg.obj;
System.out.println("----arg1---->" + arg1);
System.out.println("----arg2---->" + arg2);
System.out.println("------what-->" + what);
System.out.println("-----result--->" + result);
Bundle bundle = msg.getData();
System.out.println("----->" + bundle.getStringArray("wang").length);
};
};
- Android 线程之Message 的使用
- android编程之在单线程模型中Message、Handler、Message Queue、Looper之间的关系
- Android基础之单线程模型中Message、Handler、Message Queue、Looper之间的关系
- Android线程间通信的Message机制
- Android线程间通信的Message机制
- Android线程间通信的Message机制
- Android开发之单线程模型中Message、Handler、MessageQueue、Looper之间的关系
- Android之线程池的使用
- Android之Message机制的灵活应用
- Handler和Message的使用之二
- Handler和Message的使用之三
- Handler和Message的使用之四
- android线程 message和runnable
- android线程 message和runnable
- android线程handler、message、looper
- Android线程:Message和Runnable
- android 线程:Message和Runnable
- android handler Message 的使用备忘录
- bzoj1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚
- MySQL卸载
- 多线程同步方法<一>数据库悲观锁(for update)
- 分页查询
- QT5程序发布--打包可执行文件和动态链接库
- Android 线程之Message 的使用
- jQuery效果之tab
- shiro权限框架中的认证和授权过程
- UVa11796 - Dog Distance(二维几何)
- 1、Hadoop2.6.0 和 Hadoop1.2.1伪分布环境搭建
- OkHttp是怎么工作的 - 从介绍到分析
- TCP滑动窗口协议
- 软工文档图解(一)
- 使用WinDbg —— .NET篇 (五)