Android studio之AIDL的使用
2017-03-22 16:50
148 查看
AIDL的使用
基本数据的传递和复杂对象的传递
基本数据的传递流程
1.在main文件夹下右键创建file>AIDL>AIDL文件
生成一个IMyAidlInterface.aidl这个接口就是我们将要在服务中实现的然后进行跨进程之间的数据传递
下面是抽象方法
int basicTypes()
AIDL文件创建完成
我们进行编译AIDL的编译
标题栏中的build选项中make module”项目名”进行编译,在项目文件夹下的build>generated>source>aidl>debug>下面会生成一个包>IMyAidlInterface 内容就是自动编译出来的,,,,,,,编译成功,,,这样我们的aidl告一段路
然后在我们的包下面创建一个服务MyService集成Service 实现相应的的方法
在onBind()返回一个IMyservice代码如下
然后我们在创建一个内部类集成 IMyAidlInterface.Stub
重写 IMyAidlInterface中的方法,返回我们要传递的值
不要忘记注册服务
这样我们就实现了我们的
服务端的代码
下面搭建客户端
将服务端中的aidl文件夹,复制到我们客户端的main文件夹下面
然后将我们的 我们创建服务连接对象ServiceConnection
下一步就是进行服务的绑定了
然后就是获取数据:
获取数据
这样我们就获取了a代码了;
下面是复杂对象的传递主要牵扯对象的处理
正常创建一个对象类person,实现Parcelable
服务端在创建IMyAidlInterface.aidl后还要创建一个文件对象名.aidl
创建一个Person.aidl
接下来就是编译aidl文件,方法同上
服务端在IMyservice服务中返回一个Person对象就ok了
这样服务端又一次完成配置
客户端配置
复制服务端的aidl文件
创建一个和服务端包名相同的包,复制Person类,这样是保证Person的全类名完全一致
后面获取数据就类似了
基本数据的传递和复杂对象的传递
基本数据的传递流程
1.在main文件夹下右键创建file>AIDL>AIDL文件
生成一个IMyAidlInterface.aidl这个接口就是我们将要在服务中实现的然后进行跨进程之间的数据传递
下面是抽象方法
int basicTypes()
AIDL文件创建完成
我们进行编译AIDL的编译
标题栏中的build选项中make module”项目名”进行编译,在项目文件夹下的build>generated>source>aidl>debug>下面会生成一个包>IMyAidlInterface 内容就是自动编译出来的,,,,,,,编译成功,,,这样我们的aidl告一段路
然后在我们的包下面创建一个服务MyService集成Service 实现相应的的方法
在onBind()返回一个IMyservice代码如下
public class MyService extends Service { @Nullable @Override public IBinder onBind(Intent intent) { return new IMyservice(); }
然后我们在创建一个内部类集成 IMyAidlInterface.Stub
重写 IMyAidlInterface中的方法,返回我们要传递的值
不要忘记注册服务
这样我们就实现了我们的
服务端的代码
下面搭建客户端
将服务端中的aidl文件夹,复制到我们客户端的main文件夹下面
然后将我们的 我们创建服务连接对象ServiceConnection
private IMyAidlInterface mService; ServiceConnection connection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { mService = IMyAidlInterface.Stub.asInterface(service); } @Override public void onServiceDisconnected(ComponentName name) { mService = null; } };
下一步就是进行服务的绑定了
Intent intent = new Intent(); // intent.setAction("zgkx.chinaapp.com.myapplication"); intent.setPackage("zgkx.chinaapp.com.myapplication"); bindService(intent, connection, Context.BIND_AUTO_CREATE);
然后就是获取数据:
获取数据
int a=mService .basicTypes()
这样我们就获取了a代码了;
下面是复杂对象的传递主要牵扯对象的处理
正常创建一个对象类person,实现Parcelable
服务端在创建IMyAidlInterface.aidl后还要创建一个文件对象名.aidl
// IMyAidlInterface.aidl的代码 package zgkx.chinaapp.com.myapplication; // Declare any non-default types here with import statements //注意这里需要手动引用类 import zgkx.chinaapp.com.myapplication.Person; interface IMyAidlInterface { /** * Demonstrates some basic types that you can use as parameters * and return values in AIDL. */ Person basicTypes(); }
创建一个Person.aidl
// Person.aidl package zgkx.chinaapp.com.myapplication; // Declare any non-default types here with import statements parcelable Person ;
接下来就是编译aidl文件,方法同上
服务端在IMyservice服务中返回一个Person对象就ok了
这样服务端又一次完成配置
客户端配置
复制服务端的aidl文件
创建一个和服务端包名相同的包,复制Person类,这样是保证Person的全类名完全一致
后面获取数据就类似了
相关文章推荐
- Android Studio 使用AIDL
- Android Studio AIDL 的使用 。
- Android Studio使用AIDL 实现进程间通信实例
- 在Android Studio中使用AIDL实现进程之间的通信
- 在Android studio里面使用AIDL
- Android studio 使用AIDL 无法import class问题解决
- Android Studio中AIDL使用方法
- 使用Android studio创建的AIDL编译时找不到自定义类的解决办法
- 使用Android studio创建的AIDL编译时找不到自定义类的解决办法
- android studio 下aidl的使用遇到的坑
- android studio 使用AIDL实现IPC
- Android Studio中使用AIDL简单示例
- android studio 中使用aidl
- 【转载】Android Studio 使用AIDL
- Android IPC机制(三)在Android Studio中使用AIDL实现跨进程方法调用
- 在android studio中使用aidl文件注意事项
- Android Studio中使用AIDL
- Android Studio中AIDL的使用详解
- Android Studio中使用AIDL进行进程间通信
- Android studio 挂断电话 使用ITelephony.aidl