Messenger 使用介绍
来源:互联网 发布:活动策划公司知乎 编辑:程序博客网 时间:2024/06/06 13:55
综述:
Messenger用于跨进程通信,他的实现方式是用到了AIDL,因为可以传递的对象类型比较多,所以应用范围比较广。
Messenger在API中的介绍如下
Reference to a Handler, which others can use to send messages to it. This allows for the implementation of message-based communication across processes, by creating a Messenger pointing to a Handler in one process, and handing that Messenger to another process.
Note: the implementation underneath is just a simple wrapper around a Binder that is used to perform the communication. This means semantically you should treat it as such: this class does not impact process lifecycle management (you must be using some higher-level component to tell the system that your process needs to continue running), the connection will break if your process goes away for any reason, etc.
相关的类:
Message,Handler,Intent,Bundle
Bundle可以传递的数据格式:常见的比如int,String,float不常见的比如Serializable和Parcelable类型。所以只要是实现了Serializable和Parcelable接口的类都可以进行传递。
Message可以传递的数据:arg1,arg2,what,obj,replyTo(Messenger对象),sendingUid(Optional field indicating the uid that sent the message.)这里重点聊一下Message的replyTo。
获得Message的最好的方式是调用Message.obtain() 和 Handler.obtainMessage()方法。obtain函数有很多参数不同的多态函数,其中一个是Message.obtain(Handler h,int what)第一个参数可以为null,第二个参数可以自定义。Messenger中经常用这个函数进行配对。
Handler在这里用的不多,先略过。
Intent之前介绍的很详细了。
使用方法
Messenger的使用包括两个地方,一个是server端,一个是client端。
1. 先准备好一个Message,这个Message可以通过Message.obtain(Handler h,int what)获得,可以添加Bundle数据以及replyTo。
2. 准备一个Messenger,这个Messenger可以通过new Messenger-Handler()或者msg.replyTo获得。
3. Messenger.send(msg)发送Message数据。
4. 在Handler的handleMessage()函数中获得指定what的msg,进行处理。
注意
Messenger可以传递的数据类型由Message可以传递的数据类型决定,如果想传递一个自定义的类,那么必须要保证这个类通过Parcelable或者Serializable序列化,然后放到Bundle对象中通过Message传递。
- Messenger 使用介绍
- Messenger使用介绍
- 使用Messenger
- 使用Messenger
- windows messenger 安装使用
- 使用Messenger的IPC
- Messenger的使用
- IPC-Messenger使用实例
- 使用Messenger实现IPC
- messenger 的使用
- 深入介绍 MVVM Light Messenger
- Android IPC之Messenger介绍
- Messenger
- Messenger
- Messenger
- Messenger
- Messenger
- 使用 MessengerAPI 控制 MSN Messenger
- nyoj 34 韩信点兵
- 数据结构实验之链表六:有序链表的建立
- singleInstance模式下跳转动画问题
- Label文本随宽度自适应
- Ajax请求返回406 Not Acceptable
- Messenger 使用介绍
- mac终端(命令)的使用(包括如何用终端写c程序)
- poj1182食物链
- SG 函数 poj 1082 Calendar Game
- 程序中的@Override是什么意思?
- java界面学习
- Android: Hide Navigation bar 隐藏导航条
- 顺时针打印矩阵
- android控件的对齐方式,控件布局(顶部、底部)留着自用~~~