Android的Service Binder机制
16lz
2021-01-23
IMyService myService = IMyService .Stub.asInterface(ServiceManager.getService("myservice"));// 可以去IMyService的实现中找到asInterface方法的实现(IMyService.java由IMyService.aidl生成):/** Local-side IPC implementation stub class. */public static abstract class Stub extends android.os.Binder implements com.android.my.IMyService{private static final java.lang.String DESCRIPTOR = "com.android.my.IMyService";/** Construct the stub at attach it to the interface. */public Stub(){this.attachInterface(this, DESCRIPTOR);}/** * Cast an IBinder object into an com.android.my.IMyService interface, * generating a proxy if needed. */public static com.android.my.IMyService asInterface(android.os.IBinder obj){if ((obj==null)) {return null;}android.os.IInterface iin = (android.os.IInterface)obj.queryLocalInterface(DESCRIPTOR);if (((iin!=null)&&(iin instanceof my.IMyService))) {return ((my.IMyService)iin);}return new my.IMyService.Stub.Proxy(obj);}// 可见,ServiceManager中注册的是IBinder,可以理解为句柄,传入asInterface后,通过接口的描述生成相应接口,接着返回代理的接口对象。
更多相关文章
- 关于Unity中Android设备调用震动接口的实现
- Android里监视数据库的变化 registerContentObserver 接口
- Android 抽象回调函数以及接口回调更新UI
- [Android]RecyclerView基本使用+adapter回调接口实现点击事件
- Android学习笔记之网络接口(Http接口,Apache接口,Android接口)
- Android 接口回调机制