AIDL ---(Android Interface Definition Language)Android接口定义语言

  简述:

1、什么时候使用?

通信方式 使用场景
AIDL IPC 、多个应用程序、多线程
Binder IPC 、多个应用程序
Messenger IPC
注:  IPC --- (Inter-Process communication)进程间通信/跨进程通信

    

2、如何实现 AIDL 通信?

   下面是项目目录结构图:客户端与服务端代码要保证 aidl 文件夹下内容的一致

    步骤①:创建一个AIDL文件. (在服务端)

 // IMyAidlInterface.aidl
package com.anglus.aidl; // Declare any non-default types here with import statements interface IMyAidlInterface {
/**
* Demonstrates some basic types that you can use as parameters
* and return values in AIDL.
*/
// 计算两个数的和
int add(int num1, int num2);
}

    步骤②:实现自定义的AIDL 接口文件(在服务端)

  public class IRemoteService extends Service {

    @Override
public IBinder onBind(Intent intent) {
return mIBinder;
} private IBinder mIBinder = new IMyAidlInterface.Stub() {
@Override
public int add(int num1, int num2) throws RemoteException {
Log.i("IRemoteService", "收到远程的请求,传入的参数是:" + num1 + "和" + num2);
return num1 + num2;
}
};
}

      一定不要忘了在 AndroidManifest.xml 文件中注册服务:

  <service
android:name=".IRemoteService"
android:enabled="true"
android:exported="true"/>

    步骤③: 绑定服务,得到远程服务对象,即可在客户端进行使用。

   private void bindService() {
// 绑定到服务
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.anglus.aidl",
"com.anglus.aidl.IRemoteService"));
bindService(intent, conn, Context.BIND_AUTO_CREATE);
} private ServiceConnection conn = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// 拿到远程服务
iMyAidlInterface = IMyAidlInterface.Stub.asInterface(service);
} @Override
public void onServiceDisconnected(ComponentName name) {
// 回收资源
iMyAidlInterface = null;
}
};

      注意:在 new ComponetName() 中,第一个参数是:服务端的 项目包名;第二个参数是:要绑定的服务 包名 + 类名。

    

Android AIDL 一探究竟的更多相关文章

  1. Android AIDL自动生成Java文件测试

    /******************************************************************************** * Android AIDL自动生成 ...

  2. Using self-defined Parcelable objects during an Android AIDL RPC / IPC call

    Using self-defined Parcelable objects during an Android AIDL RPC / IPC call In my previous post “Usi ...

  3. AIDL/IPC Android AIDL/IPC 进程通信机制——超具体解说及使用方法案例剖析(播放器)

    首先引申下AIDL.什么是AIDL呢?IPC? ------ Designing a Remote Interface Using AIDL 通常情况下,我们在同一进程内会使用Binder.Broad ...

  4. (转载)你真的理解Android AIDL中的in,out,inout么?

    前言 这其实是一个很小的知识点,大部分人在使用AIDL的过程中也基本没有因为这个出现过错误,正因为它小,所以在大部分的网上关于AIDL的文章中,它都被忽视了——或者并没有,但所占篇幅甚小,且基本上都是 ...

  5. Android AIDL使用详解_Android IPC 机制详解

    一.概述 AIDL 意思即 Android Interface Definition Language,翻译过来就是Android接口定义语言,是用于定义服务器和客户端通信接口的一种描述语言,可以拿来 ...

  6. android aidl

    参考: http://blog.csdn.net/u014614038/article/details/48399935 本文提供了一个关于AIDL使用的简单易懂的例子,分为客户端和服务端两部分,分别 ...

  7. android aidl 进程间通信需要注意的地方(android.os.TransactionTooLargeException)

    转自:http://blog.sina.com.cn/s/blog_4e1e357d0102wau9.html 1.bus工程实现通过service实现aidl实体类 2.actor工程通过发起bin ...

  8. Android AIDL 进行进程间通讯(IPC)

    编写AIDL文件时,需要注意: 1.接口名和aidl文件名相同. 2.接口和方法前不用加访问权限修饰符 (public.private.protected等,也不能用final.static). 3. ...

  9. [Android Pro] Android Support 包里究竟有什么

    reference to : http://www.2cto.com/kf/201411/350928.html 随着 Android 5.0 Lollipop 的发布,Android 又为我们提供了 ...

随机推荐

  1. 使用程序获取整型数据和浮点型数据在内存中的表示---gyy整理

    使用程序获取整型数据和浮点型数据在内存中的表示. C++中整型(int).短整型(short int).单精度浮点数(float).双精度浮点数(double)在内存中所占字节数不同,因此取值范围也不 ...

  2. SPRING IN ACTION 第4版笔记-第九章Securing web applications-008-使用非关系型数据库时如何验证用户(自定义UserService)

    一. 1.定义接口 Suppose that you need to authenticate against users in a non-relational database suchas Mo ...

  3. ANDROID_MARS学习笔记_S01_002View、监听器初步

    一.View.监听器介绍 二.在Activity中获取view和设置属性,设置button的监听器 1.activity_main.xml <LinearLayout xmlns:android ...

  4. 已授予账号 "以服务方式登录"的权限

    已授予账号.\Cliff "以服务方式登录"的权限 --------------------------------------------------- 进入服务管理器(Serv ...

  5. Android:Resources资源文件

    Android Resoureces是res目录下的那些目录和文件,常用的有: res/drawable/ 存放图片资源,类型有: 相关使用: Android:res之shape制作圆角 Androi ...

  6. 一步一步制作yaffs/yaffs2根文件系统(三)---使用glibc库构造 /lib

    开发环境:Ubuntu 12.04 开发板:mini2440  256M NandFlash   64M SDRAM glibc库:点此下载 交叉编译器:arm-linux-gcc 4.4.3点此可下 ...

  7. WinForm实现简单的拖拽文件到出题的功能(C#)(3)

    string path = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString(); textBox1. ...

  8. System.Drawing.Graphics中比较重要的几个方法

    方法 常见参数 绘制的图形 DrawLine 钢笔.起点和终点 一段直线 DrawRectangle 钢笔.位置和大小 空心矩形 DrawEllipse 钢笔.位置和大小 空心椭圆 FillRecta ...

  9. poj 3253 Fence Repair (哈夫曼树 优先队列)

    题目:http://poj.org/problem?id=3253 没用long long wrong 了一次 #include <iostream> #include<cstdio ...

  10. 正则化(Regularization)

    正则化(Regularization)是机器学习中抑制过拟合问题的常用算法,常用的正则化方法是在损失函数(Cost Function)中添加一个系数的\(l1 - norm\)或\(l2 - norm ...