/********************************************************************************
* Android AIDL自动生成Java文件测试
* 说明:
* 知道有aidl这东西已经挺久了,但是一直没有花时间来系统了解一下其工作机制,现在
* 花点时间一点一点验证一下其功能。
*
* 2016-5-8 深圳 南山平山村 曾剑锋
*******************************************************************************/
二、cat forService.aidl
package com.example.aidltest.aidl;
import com.example.aidltest.aidl.forActivity;
interface forService {
void registerTestCall(forActivity cb);
void invokCallBack();
}
三、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 interface forService extends android.os.IInterface {
/** Local-side IPC implementation stub class. */
// Stub类继承了Binder,并继承我们在aidl文件中定义的接口
public static abstract class Stub 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. */
public Stub() {
this.attachInterface(this, DESCRIPTOR);
}
/**
* Cast an IBinder object into an com.example.aidltest.aidl.forService
* interface, generating a proxy if needed.
*/
// 在使用的时候经常会看到这一部分的内容
public static com.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 new com.example.aidltest.aidl.forService.Stub.Proxy(obj);
}
@Override
public android.os.IBinder asBinder() {
return this;
}
@Override
public boolean onTransact(int code, android.os.Parcel data,
android.os.Parcel reply, int flags)
throws android.os.RemoteException {
switch (code) {
case INTERFACE_TRANSACTION: {
reply.writeString(DESCRIPTOR);
return true;
}
case TRANSACTION_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;
}
case TRANSACTION_invokCallBack: {
data.enforceInterface(DESCRIPTOR);
this.invokCallBack();
reply.writeNoException();
return true;
}
}
return super.onTransact(code, data, reply, flags);
}
private static class Proxy implements
com.example.aidltest.aidl.forService {
private android.os.IBinder mRemote;
Proxy(android.os.IBinder remote) {
mRemote = remote;
}
@Override
public android.os.IBinder asBinder() {
return mRemote;
}
public java.lang.String getInterfaceDescriptor() {
return DESCRIPTOR;
}
@Override
public void registerTestCall(
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();
}
}
@Override
public void invokCallBack() 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 void registerTestCall(com.example.aidltest.aidl.forActivity cb)
throws android.os.RemoteException;
public void invokCallBack() throws android.os.RemoteException;
}
四、cat MainActivity.java
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
......
new forService.Stub() {
@Override
public void registerTestCall(forActivity cb) throws RemoteException {
// TODO Auto-generated method stub
}
@Override
public void invokCallBack() throws RemoteException {
// TODO Auto-generated method stub
}
};
......
}
}
Android AIDL自动生成Java文件测试
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:学习新技术的10个建议
下一篇:CoreSight(一)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
服务端测试之PostMan自动生成测试脚本
PostMan智能化测试实战
接口测试 自动化测试 服务端测试 PostMan -
android11 AIDL 自动生成
阅读本文大概需要 7.9 分钟。程序员最苦恼的事情莫过于写文档。由于业务口径频繁变更,因此很多接口也会频繁变更,频繁变更导致文档的维护是一件相当费时的事情,当优先级更高的事情袭来,更新文档反到成了次要工作,久而久之,文档就算有,也不是最新的,有些接口,干脆文档也不写了,口口相传了事。没有文档,对于新手或者工作交接,是一件非常麻烦的事情,也不利于程序的传承。那么,有没有这样一种程序,根据 api 函
android11 AIDL 自动生成 vantui框架官方文档 程序员交接文档 自动生成研发文档 获取文档的url