/********************************************************************************

* Android AIDL自动生成Java文件测试

* 说明:

* 知道有aidl这东西已经挺久了,但是一直没有花时间来系统了解一下其工作机制,现在

* 花点时间一点一点验证一下其功能。

*

* 2016-5-8 深圳 南山平山村 曾剑锋

*******************************************************************************/一、参考文章:1. Android AIDL使用详解

http://blog.csdn.net/stonecao/article/details/6425019

2. android进程间通信:使用AIDL

http://blog.csdn.net/saintswordsman/article/details/5130947

二、cat forService.aidl

package com.example.aidltest.aidl;

import com.example.aidltest.aidl.forActivity;interfaceforService {voidregisterTestCall(forActivity cb);voidinvokCallBack();

}

三、cat forService.java/** This file is auto-generated. DO NOT MODIFY.

* Original file: D:\\soft\\Android\\workspace\\AidlTest\\src\\com\\example\\aidltest\\aidl\\forService.aidl*/package com.example.aidltest.aidl;//继承了android.os.IInterface接口

public interfaceforService extends android.os.IInterface {/** Local-side IPC implementation stub class.*/

//Stub类继承了Binder,并继承我们在aidl文件中定义的接口

public static abstract classStub extends android.os.Binder implements

com.example.aidltest.aidl.forService {private static final java.lang.String DESCRIPTOR = "com.example.aidltest.aidl.forService";/** Construct the stub at attach it to the interface.*/

publicStub() {this.attachInterface(this, DESCRIPTOR);

}/**

* Cast an IBinder object into an com.example.aidltest.aidl.forService

* interface, generating a proxy if needed.*/

//在使用的时候经常会看到这一部分的内容

public staticcom.example.aidltest.aidl.forService asInterface(

android.os.IBinder obj) {if ((obj == null)) {return null;

}

android.os.IInterface iin=obj.queryLocalInterface(DESCRIPTOR);if (((iin != null) &&(iin instanceof com.example.aidltest.aidl.forService))) {return((com.example.aidltest.aidl.forService) iin);

}return newcom.example.aidltest.aidl.forService.Stub.Proxy(obj);

}

@Overridepublicandroid.os.IBinder asBinder() {return this;

}

@Overridepublic boolean onTransact(intcode, android.os.Parcel data,

android.os.Parcel reply,intflags)

throws android.os.RemoteException {switch(code) {caseINTERFACE_TRANSACTION: {

reply.writeString(DESCRIPTOR);return true;

}caseTRANSACTION_registerTestCall: {

data.enforceInterface(DESCRIPTOR);

com.example.aidltest.aidl.forActivity _arg0;

_arg0=com.example.aidltest.aidl.forActivity.Stub

.asInterface(data.readStrongBinder());this.registerTestCall(_arg0);

reply.writeNoException();return true;

}caseTRANSACTION_invokCallBack: {

data.enforceInterface(DESCRIPTOR);this.invokCallBack();

reply.writeNoException();return true;

}

}returnsuper.onTransact(code, data, reply, flags);

}private static classProxy implements

com.example.aidltest.aidl.forService {privateandroid.os.IBinder mRemote;

Proxy(android.os.IBinder remote) {

mRemote=remote;

}

@Overridepublicandroid.os.IBinder asBinder() {returnmRemote;

}publicjava.lang.String getInterfaceDescriptor() {returnDESCRIPTOR;

}

@Overridepublic voidregisterTestCall(

com.example.aidltest.aidl.forActivity cb)

throws android.os.RemoteException {

android.os.Parcel _data=android.os.Parcel.obtain();

android.os.Parcel _reply=android.os.Parcel.obtain();try{

_data.writeInterfaceToken(DESCRIPTOR);

_data.writeStrongBinder((((cb!= null)) ?(cb.asBinder())

: (null)));

mRemote.transact(Stub.TRANSACTION_registerTestCall, _data,

_reply,0);

_reply.readException();

}finally{

_reply.recycle();

_data.recycle();

}

}

@Overridepublic voidinvokCallBack() throws android.os.RemoteException {

android.os.Parcel _data=android.os.Parcel.obtain();

android.os.Parcel _reply=android.os.Parcel.obtain();try{

_data.writeInterfaceToken(DESCRIPTOR);

mRemote.transact(Stub.TRANSACTION_invokCallBack, _data,

_reply,0);

_reply.readException();

}finally{

_reply.recycle();

_data.recycle();

}

}

}static final int TRANSACTION_registerTestCall = (android.os.IBinder.FIRST_CALL_TRANSACTION + 0);static final int TRANSACTION_invokCallBack = (android.os.IBinder.FIRST_CALL_TRANSACTION + 1);

}//AIDL中自定义的方法,没有实现

public voidregisterTestCall(com.example.aidltest.aidl.forActivity cb)

throws android.os.RemoteException;public voidinvokCallBack() throws android.os.RemoteException;

}

四、cat MainActivity.javapublic classMainActivity extends ActionBarActivity {

@Overrideprotected voidonCreate(Bundle savedInstanceState) {

......newforService.Stub() {

@Overridepublic voidregisterTestCall(forActivity cb) throws RemoteException {//TODO Auto-generated method stub

}

@Overridepublic voidinvokCallBack() throws RemoteException {//TODO Auto-generated method stub

}

};

......

}

}

aidl生成java文件_Android AIDL自动生成Java文件测试相关推荐

  1. 在html文件中集成easy,easyapi 通过java注解或注释自动生成带页面的接口文档

    Java-自动生成带页面可调试的接口文档 介绍:一款java接口文档自动生成的插件,包含了根据接口注释或注解自动生成接口文档,可网页打开. 特点:一款无任何代码侵入的生成方式,10秒钟集成 1.支持读 ...

  2. SpringBoot如何自动生成实体类和Dao层以及映射文件(mybatis generator 自动生成代码)

    一.首先添加自动生成代码插件 <!-- mybatis generator 自动生成代码插件 生成时解除注释 --><plugin><groupId>org.myb ...

  3. doc自动生成html,java web应用中自动生成文章html页面的实现.doc

    java web应用中自动生成文章html页面的实现 java web应用中自动生成文章html页面的实现 2009-11-09 00:24:15 标签:web开发,页面转换 [推送到技术圈] 版权声 ...

  4. Java api文档自动生成工具smartdoc+torna

    首先,一般做java服务端都用过postman,并且都写过前端调用的api文档接口,并且也用过市面上的一些工具. API自文档动生成,能够省去了写文档的时间. 当然,当前也会有很多类似的开源工具,我们 ...

  5. Java进阶之 如何自动生成代码

    一.前言:为什么要有代码的自动生成?     对于这个问题 最简洁直接的回答就是:代替手动编写代码.提高工作效率. 什么样的场景和代码适合用自动生成这种方式呢?     做过Java服务端的朋友一定都 ...

  6. MyEclipse中流程定义文件保存时自动生成流程图

    前提:MyEclipse已安装Activiti插件 第一步:打开菜单Windows->Preferences 第二步:选择Activiti->Save 第三步:勾选Create proce ...

  7. 解决VScode在保存less文件时,自动生成对应的css文件以及安装Easy less之后,计算式子不显示结果的问题

    解决VScode在保存less文件时,自动生成对应的css文件以及安装Easy less之后,计算式子不显示结果的问题 一.解决VScode在保存less文件时,自动生成对应的css文件的问题 下载安 ...

  8. 痞子衡嵌入式:MCUXpresso IDE下工程链接文件配置管理与自动生成机制

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下工程链接文件配置管理与自动生成机制. 痞子衡在 2018 年初写过一个专题 <嵌入式开发文件系列&g ...

  9. 工银e生活开发脱坑日志(9)JAVA版的SDK自动生成msgId,PHP如何生成消息通讯唯一编号msgId

    工行开发中msgId,是消息通讯唯一编号. JAVA中,SDK自动生成msgId,具体规则如下(来源工行支持中心): SDK支持自动生成msgId.以数据类型API为例,只需在SDK中调用时将clie ...

  10. php 工行e生活登录,工银e生活开发脱坑日志(9)JAVA版的SDK自动生成msgId,PHP如何生成消息通讯唯一编号msgId...

    工行开发中msgId,是消息通讯唯一编号. JAVA中,SDK自动生成msgId,具体规则如下(来源工行支持中心): SDK支持自动生成msgId.以数据类型API为例,只需在SDK中调用时将clie ...

最新文章

  1. keras 的 example 文件 pretrained_word_embeddings.py 解析
  2. [转]CSS hack大全详解
  3. JavaScript的使用
  4. 个人易遗忘的代码记录
  5. amd同步多线程_AMD下一代锐龙APU实锤!Zen3、RDNA2绝配
  6. 逻辑分析仪抓取CAN总线数据
  7. 雨尘奇偶猫单页SEO系统源码v1.3
  8. Python getattr() 函数
  9. 【Spark】Spark Stream读取kafka写入kafka报错 AbstractMethodError
  10. 【联系】—— Beta 分布与二项分布、共轭分布
  11. Linux使用命令 笔记
  12. JSP页面乱码的几种解决方案
  13. 遗传算法 matlab 详解,遗传算法的Matlab实现讲解
  14. 太阳电池板特性实验_太阳电池伏安特性的测量
  15. 如何查看kali的详细ip地址网关_在Linux中检查默认网关或路由器IP地址的四个命令...
  16. 音频打不开 服务器运行失败,win7系统提示音频服务器未运行的解决方法
  17. 计算机系统如何禁止文件删除功能,Win7如何禁止在C盘上安装软件?|win7系统c盘哪些文件是可以删除的...
  18. JAVA SE学习笔记(七):终章:Java程序设计基础笔记(全10万字)
  19. 计算机的隐藏游戏怎么找回,文件夹隐藏了怎么恢复,电脑屏幕上文件夹隐藏了怎么恢复...
  20. 黑马程序员--SpringBoot---基础篇

热门文章

  1. textarea 高度调整
  2. Report_报表中Ref Cursor数据源的概念和用法(案例)
  3. 65个技巧性回答,终身受用
  4. c# 扩展方法奇思妙用变态篇四:string 的翻身革命
  5. laravel 队列queue
  6. 俄语版TikTok风靡俄罗斯
  7. agg::rendering_buffer 渲染缓存
  8. 港口物流系统设计与优化-SMU在线学习笔记
  9. 【SmartJob】启动问题查询
  10. PostgreSQL和Kingbase中设置search_path