Android Messenger
来源:互联网 发布:程序员盗600万 编辑:程序博客网 时间:2024/05/02 04:28
Messenger
Android 提供了一个比使用AIDL(Android Interface Definition Language)更简单的IPC(Interprocess communication)方法。
Messenger (信使)顾名思义,作用是传递消息,Messenger通过一个传入的构造Handler来接受消息,
用我们熟悉的handleMessage(Messager msg)
来处理消息,而Messenger的实例可以通过send()
函数来发送Message消息。通过这种机制简化了跨进程的实现,适合在大多数的场合,应为通常情况下,很少需要关心线程安全问题,而AIDL更适合在多个进程访问同一个service的时候使用。
如何使用
1.实现一个Handler 用于接收消息。
2.使用Handler来创建Messenger。
3.在service的onBind()
中返回Messenger的Ibinder,用于在客户端重新构造一个Messenger,而不是直接传递Messenger.
4.在客户端通过onServiceConnected()
返回的Ibinder对象,实例化Messenger,通过这个Messenger来发送Message对象。
5.客户端也可以新建一个Handler来构造一个用于服务器发送反馈的Messenger。这个Messenger可以赋值给message的replyto
属性,然后通过与服务器端相关的那个Messenger来发送到服务端。
简单的例子(关键代码)
Service端
class MessengerHandler extends Handler {@Overridepublic void handlerMessage(Message msg) {} //在这里处理你的逻辑}//实例化MessngerMessenger messnger = new Messenger(new MessengerHandler());@Overridepublic IBinder onBind(Intent intent) { return messnger.getBinder();//返回Messnger的Binder对象。}
客户端
//实现serviceConnection 接口来绑定服务private Messenger mMessenger;class MyServiceConnection implements ServiceConnection {@Override public void onServiceConnected(ComponentName name, IBinder service) { //构造出于服务端相关的Messenger mMessenger = new Messenger(service); Message msg = Message.obtain(null,0x01); mMessenger.send(msg);//通过这个messenger来发送消息就可以实现IPC通信了。}}
0 0
- Android Messenger
- Android Messenger
- android Messenger
- Android Messenger 分析
- Android IPC之Messenger
- Android IPC 之Messenger
- Android 中的Messenger
- Android:IPC,Messenger,AIDL
- Android之Messenger
- Android Messenger源码分析
- Android Messenger 简介
- Android信使Messenger解析
- Android IPC之 Messenger
- Android IPC之Messenger
- android Messenger 跨进程通信
- android Messenger 跨进程通信
- Android Messenger 跨进程通信!!!!!!!!!!!!!!!!!!
- Android Bind Service 使用Messenger
- 关于JAVA Jquery jqgrid的subGrid子表格
- 操作系统内存管理的两种机制--swap和page
- 使用 Spring Data JPA 简化 JPA 开发
- Windows Kernel Way 1:Windows内核调试技术
- Windows Kernel Way 1:Windows内核调试技术
- Android Messenger
- PL SQL Developer 查询结果一次性显示所有记录
- OpenCL向量加法
- Linux常用内核态内存分配方式总结
- 关于JAVA jqgrid的合计列(footerrow:true)
- [杂谈]办公室防静电的方法
- 软件项目管理总体流程设计与分析
- struts1学习笔记--工作原理
- windows自定义命令的创建