android中ibinder有什么用
这篇文章将为大家详细讲解有关android中ibinder有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
IBinder就是绑定服务的方式启动服务,即服务可以通过Binder与启动service的类通信用的。IBinder是一个通信接口,Binder是个方法。
什么是IBinder
首先要明白,Android的远程调用(就是跨进程调用)就是通过IBinder实现的,下面是对android开发文档的翻译。
IBinder是远程对象的基本接口,是为高性能而设计的轻量级远程调用机制的核心部分。但它不仅用于远程调用,也用于进程内调用。这个接口定义了与远程对象交互的协议。不要直接实现这个接口,而应该从Binder派生。
IBinder的主要API是transact(),与它对应另一方法是Binder.onTransact()。第一个方法使你可以向远端的IBinder对象发送发出调用,第二个方法使你自己的远程对象能够响应接收到的调用。IBinder的API都是同步执行的,比如transact()直到对方的Binder.onTransact()方法调用完成后才返回。调用发生在进程内时无疑是这样的,而在进程间时,在IPC的帮助下,也是同样的效果。
IBinder源码:
packageandroid.os;
importandroid.annotation.NonNull;
importandroid.annotation.Nullable;
importjava.io.FileDescriptor;
publicinterfaceIBinder{
/**
*Thefirsttransactioncodeavailableforusercommands.
*/
intFIRST_CALL_TRANSACTION=0x00000001;
/**
*Thelasttransactioncodeavailableforusercommands.
*/
intLAST_CALL_TRANSACTION=0x00ffffff;
/**
*IBinderprotocoltransactioncode:pingBinder().
*/
intPING_TRANSACTION=('_'<<24)|('P'<<16)|('N'<<8)|'G';
/**
*IBinderprotocoltransactioncode:dumpinternalstate.
*/
intDUMP_TRANSACTION=('_'<<24)|('D'<<16)|('M'<<8)|'P';
关于“android中ibinder有什么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。