android developer tiny share-20170220
来源:互联网 发布:python与量化交易 编辑:程序博客网 时间:2024/06/10 07:31
今天讲android AIDL的“实现接口”这一步,会讲在..\app\build\generated\source\aidl\debug\com\zheng3stone\service下生成的AIDL对应的java类的结构和含义,比如Stub抽象类,asInterface方法。另外,还会讲下AIDL涉及的多进程、多线程的相关规则。
以下是android developer官网关于“实现接口”的讲解。
2. 实现接口
当您开发应用时,Android SDK 工具会生成一个以 .aidl 文件命名的 .java 接口文件。生成的接口包括一个名为 Stub 的子类,这个子类是其父接口(例如,YourInterface.Stub)的抽象实现,用于声明 .aidl 文件中的所有方法。
注:Stub 还定义了几个帮助程序方法,其中最引人关注的是 asInterface(),该方法带 IBinder(通常便是传递给客户端 onServiceConnected() 回调方法的参数)并返回存根接口实例。 如需了解如何进行这种转换的更多详细信息,请参见调用 IPC 方法一节。
如需实现 .aidl 生成的接口,请扩展生成的 Binder 接口(例如,YourInterface.Stub)并实现从 .aidl 文件继承的方法。
以下是一个使用匿名实例实现名为 IRemoteService 的接口(由以上 IRemoteService.aidl 示例定义)的示例:
private final IRemoteService.Stub mBinder = new IRemoteService.Stub() { public int getPid(){ return Process.myPid(); } public void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat, double aDouble, String aString) { // Does nothing }};现在,mBinder 是 Stub 类的一个实例(一个 Binder),用于定义服务的 RPC 接口。 在下一步中,将向客户端公开该实例,以便客户端能与服务进行交互。
在实现 AIDL 接口时应注意遵守以下这几个规则:
- 由于不能保证在主线程上执行传入调用,因此您一开始就需要做好多线程处理准备,并将您的服务正确地编译为线程安全服务。
- 默认情况下,RPC 调用是同步调用。如果您明知服务完成请求的时间不止几毫秒,就不应该从 Activity 的主线程调用服务,因为这样做可能会使应用挂起(Android 可能会显示“Application is Not Responding”对话框)— 您通常应该从客户端内的单独线程调用服务。
- 您引发的任何异常都不会回传给调用方。
0 0
- android developer tiny share-20170220
- android developer tiny share-20160627
- android developer tiny share-20160628
- android developer tiny share-20160629
- android developer tiny share-20160630
- android developer tiny share-20160701
- android developer tiny share-20160704
- android developer tiny share-20160705
- android developer tiny share-20160706
- android developer tiny share-20160707
- android developer tiny share-20160708
- android developer tiny share-20160711
- android developer tiny share-20160712
- android developer tiny share-20160713
- android developer tiny share-20160714
- android developer tiny share-20160715
- android developer tiny share-20160718
- android developer tiny share-20160719
- Before Android 4.1, method android.graphics.PorterDuffColorFilter
- Android基础——快速开发之定制BaseTemplate
- wampserver下升级php7
- 一次生产事故的优化经历
- 依存句法分析与语义依存分析的区别
- android developer tiny share-20170220
- macbook 安装多版本jdk环境
- 一个http请求发送到后端的详细过程
- 关于LoadRunner
- kettle kitchen的使用
- guava缓存
- windows以及linux下安装gensim笔记以及用wiki(维基百科数据)训练中文词向量
- Mysql常用命令
- 安卓多渠道打包的搭建