AIDL使用详解 (二)AndroidStudio中 创建 AIDL service
2017-01-18 22:53
363 查看
当我对AIDL一无所知的时候,想去了解一下,网上一搜,虽然有很多资料,博客是写这个的,但是,一无所知的我看不懂呀。各种关于Android studio 使用 AIDL的,但是讲解不是很细致,总是版图而废。鉴于此,我想记录一下我的学习过程,一步步演示怎么用AndroidStudio 创建 AIDL 。如果能帮助到你,是我莫大的荣幸。也欢迎各位大佬拍砖。
这是一篇入门级别的文章,大牛请移步,专为像笔者这样的小白分享。
最小SDK根据你需要自行设定,这里我选用 API 19。当然,这个不重要。
为了更好突出AIDL相关的说明,我们选择创建 Empty Activity .然后点击 next。
到此为止,项目创建完毕。如果你是大牛,恐怕要觉得小儿科了吧。
然后选中文件夹,右键创建aidl文件
如果我们不修改Android studio 默认的文件名,直接finish,则最终结果 如下:
这是一篇入门级别的文章,大牛请移步,专为像笔者这样的小白分享。
创建项目 (大牛略过)
首先创建项目,我们命名为AIDLTest好了。最小SDK根据你需要自行设定,这里我选用 API 19。当然,这个不重要。
为了更好突出AIDL相关的说明,我们选择创建 Empty Activity .然后点击 next。
到此为止,项目创建完毕。如果你是大牛,恐怕要觉得小儿科了吧。
创建AIDL 文件夹及 aidl 文件
然后选中文件夹,右键创建aidl文件
如果我们不修改Android studio 默认的文件名,直接finish,则最终结果 如下:
查看自动生成的Java文件
此时,把项目的查看方式切换到 project选项,依次切换 目录 app->build->generated->source->aidl->debug.此时,你发现debug文件夹为空。好,下面编译一下程序,点击control + F9或者点击 build -> make project.或者点击Rebuild.反正只要能编译下程序就行。然后再次查看debug文件夹,如下图完成
此时,aidl文件用Android Studio 创建完成./* * This file is auto-generated. DO NOT MODIFY. * Original file: D:\\Users\\AS04\\AIDLTest\\app\\src\\main\\aidl\\com\\kite\\aidltest\\IMyAidlInterface.aidl */ package com.kite.aidltest; // Declare any non-default types here with import statements public interface IMyAidlInterface extends android.os.IInterface { /** Local-side IPC implementation stub class. */ public static abstract class Stub extends android.os.Binder implements com.kite.aidltest.IMyAidlInterface { private static final java.lang.String DESCRIPTOR = "com.kite.aidltest.IMyAidlInterface"; /** Construct the stub at attach it to the interface. */ public Stub() { this.attachInterface(this, DESCRIPTOR); } /** * Cast an IBinder object into an com.kite.aidltest.IMyAidlInterface interface, * generating a proxy if needed. */ public static com.kite.aidltest.IMyAidlInterface asInterface(android.os.IBinder obj) { if ((obj==null)) { return null; } android.os.IInterface iin = obj.queryLocalInterface(DESCRIPTOR); if (((iin!=null)&&(iin instanceof com.kite.aidltest.IMyAidlInterface))) { return ((com.kite.aidltest.IMyAidlInterface)iin); } return new com.kite.aidltest.IMyAidlInterface.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_add: { data.enforceInterface(DESCRIPTOR); int _arg0; _arg0 = data.readInt(); int _arg1; _arg1 = data.readInt(); int _result = this.add(_arg0, _arg1); reply.writeNoException(); reply.writeInt(_result); return true; } } return super.onTransact(code, data, reply, flags); } private static class Proxy implements com.kite.aidltest.IMyAidlInterface { 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 int add(int num1, int num2) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(); android.os.Parcel _reply = android.os.Parcel.obtain(); int _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(num1); _data.writeInt(num2); mRemote.transact(Stub.TRANSACTION_add, _data, _reply, 0); _reply.readException(); _result = _reply.readInt(); } finally { _reply.recycle(); _data.recycle(); } return _result; } } static final int TRANSACTION_add = (android.os.IBinder.FIRST_CALL_TRANSACTION + 0); } public int add(int num1, int num2) throws android.os.RemoteException; }
相关文章推荐
- Android 四大组件 Service实现原理以及AIDL语言的使用详解
- Android Studio 中AIDL 的创建与使用详解
- androidstudio中AIDL的使用详解
- Android中RemoteService的使用详解(Aidl、IPC机制)
- Android服务Service详解(作用,生命周期,AIDL)系列文章--服务绑定和开启混合使用
- "activity和service通信"-三大方法之-使用AIDL(跨程序通信)-AndroidStudio方式
- Android Service详解(六)---绑定服务BoundService详解之AIDL的自定义属性使用
- Android 四大组件之(2)Service实现原理以及AIDL语言的使用详解
- androidstudio中AIDL的使用详解
- Android Studio下使用AIDL创建和使用远程service
- 使用SharePoint Web Service(1):创建子站点
- Android 使用 aidl 文件创建服务示例
- 使用SharePoint Web Service(2):创建List
- Android AIDL使用详解
- 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!
- log4j使用详解--创建自己的日志系统
- Google Map开发系列(四)——使用JavaScript创建地图步骤详解
- 【详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!】【一】
- 【详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!】【二】
- 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!【2012-12-11日更新获取"产品付费数量等于0的问题"】