【编辑推荐】
- Android分辨率适配小试牛刀
- 在没有Kotlin的世界与Android共舞
- 如安在Android App上高效显示位图
- Android动态代劳以及应用动态代劳实现ServiceHook
- Android仿华为气象绘制刻度盘
在Messenger中进行数据传递必须将数据放入Message中,而Messenger和Message都是实现了Parcelable接口,是以可以跨过程传输。实际上:经由过程Messenger来传输Message,Message中能应用的载体只有what、arg1、arg2、Bundle已经replyTo。Message的另一个字段object在同一过程中是很实用的,然则在过程间通信时刻,非体系的Parcelable对象无法经由过程object字段来传输。但可以实用Bundle,Bundle可以支撑大年夜量的数据类型。
应用AIDL
- Map 只支撑HashMap ,琅绫擎每个元素必须可以或许被AIDL支撑,包含key 和value
用Messenger来进行过程间通信时是以串行的方法处理客户端发来的消息,如不雅大年夜量的消息同时发送到办事端,办事端仍然只能一个个处理,如不雅大年夜量的并发请求,那么竽暌姑Messenger就不太合适了。同时Messenger的感化主如果为了传递消息,很多时刻我们可能须要跨过程调用办事端办法,这个时刻我们就可以用AIDL了。
办事端起重要创建一个Service用来监听客户端的连接,然后创建一个AIDL文件,将裸露给客户端的接口在这个AIDL文件中声明,最后在Service中实现这个AIDL文件即可。
- 客户端
起首绑定办事端的Service,绑定成功后,将办事端返回的Binder对象转成AIDL接口所属的类型,接着就可声调用AIDL中的办法。
- AIDL接口的创建
- // IBookManager.aidl
- com.example.xiahao.myapplication;
- // Declare any non-default types here with import statements
- import com.example.xiahao.myapplication.Book;
- import com.example.xiahao.myapplication.IOnNewBookArrivedListener;
- interface IBookManager {
- List<Book> getBookList();
- void addBook(in Book book);
- }
在AIDL文件中,并不是所有的类型都支撑的,支撑的类型如下:
- 根本数据类型(int 、long 、char、 boolean 、double等);
- string 和CharSequence
- private static final String TAG = "MessengerService"
推荐阅读
中国人平易近银行宣布他们在近期成立了金融科技(FinTech)委员会。金融科技是技巧驱动的金融立异,为金融成长注入了新的活力,也给金融安然带来了新挑衅。中国人平易近银行将组织深刻研究金>>>详细阅读
本文标题:Android中的IPC机制
地址:http://www.17bianji.com/lsqh/35226.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示