1. AIDL有什么用?用TA到目的是什么?

2. 怎么用AIDL?

1. AIDL有什么用?

1.1. 为了提高代码执行速度,将部分逻辑封入C/C++代码中 

1.2. 为了调用这部分代码,使用JNI 

1.3.为了更多到app能调用JNI,把TA做成Service,让其他app通过IBinder进行IPC调用(Inter-Process Communication) 

1.4. IBinder只有transact(),对应多个JNI函数时不便。让app转而调用Proxy/Stub结构的AIDL 



区别如图:

2. 怎么用AIDL?

2.1 服务器端project

2.1.1. 编写aidl文件,内容类似java文件

2.1.2. build后会在gen的相应package下生成同名的java文件,extends android.os.IInterface并包含Stub

2.1.3. 新建一个Service类,包含一个extends Stub的内部类,并Override Service的onBind()返回内部类的instance

2.2 客户端project

2.2.1. 将服务端中aidl生成的java文件拷入src的同package下

2.2.2. 用bindService()绑定服务

示例代码见这里以及《Android/OPhone开发完全讲义》第8章

AIDL基本用法的更多相关文章

  1. android AIDL 语言用法

    跨进程通信可以用AIDL语言 这里讲述下如何使用AIDL语言进行跨进程通信 文章参考 <设计模式>一书 demo结构参考 主要的文件类有:IBankAidl.aidl java文件:Aid ...

  2. Android AIDL的用法

    一.什么是AIDL服务   一般创建的服务并不能被其他的应用程序访问.为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Remote Procedure Cal ...

  3. AIDL使用解析

    简书本文地址:点击跳转到简书查看 之前面试的时候被问到这个问题,然而当时只有一个大致的印象,随GG,于是我就重新整理的一下.这里大力推荐<Android开发艺术探索>这本书,写的太好了! ...

  4. Android aidl Binder框架浅析

      转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38461079 ,本文出自[张鸿洋的博客] 1.概述 Binder能干什么?B ...

  5. Android的IPC机制(一)——AIDL的使用

    综述 IPC(interprocess communication)是指进程间通信,也就是在两个进程间进行数据交互.不同的操作系统都有他们自己的一套IPC机制.例如在Linux操作系统中可以通过管道. ...

  6. AIDL介绍和实例讲解

    前言 为使应用程序之间能够彼此通信,Android提供了IPC (Inter Process Communication,进程间通信)的一种独特实现: AIDL (Android Interface ...

  7. aidl使用采坑记

    什么是AIDL? AIDL是 Android Interface definition language的缩写,它是一种Android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口 A ...

  8. AIDL基本使用

    1.概述 Binder能干什么?Binder可以提供系统中任何程序都可以访问的全局服务.这个功能当然是任何系统都应该提供的,下面我们简单看一下Android的Binder的框架 Android Bin ...

  9. Android探索之旅 | AIDL原理和实例讲解

    轉載自http://www.jianshu.com/p/ef86f682a8f9 -- 作者 谢恩铭 转载请注明出处 前言 为使应用程序之间能够彼此通信,Android提供了IPC (Inter Pr ...

随机推荐

  1. SSM4-Linux上jdk、tomcat、zookeeper------tar zxvf的安装

    1.zookeeper .Zookeeper介绍 官方推荐使用zookeeper注册中心. 注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发 ...

  2. iscroll的滑动效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 关于golang中某些包无法下载的解决方法

    由于某些不可描述的原因,我们 在go module 环境下(啥?这个不知道是啥?赶紧恶补下)进行go get xxxx时,会发现一些依赖库无法访问(不要问为什么无法访问). 解决办法 戳这里:http ...

  4. 提升mysql服务器性能(复制原理与拓扑优化)

    原文:提升mysql服务器性能(复制原理与拓扑优化) 版权声明:皆为本人原创,复制必究 https://blog.csdn.net/m493096871/article/details/9008171 ...

  5. oracle常用的时间格式转换

    1:取得当前日期是本月的第几周  select to_char(sysdate,'YYYYMMDD W HH24:MI:SS') from dual; TO_CHAR(SYSDATE,'YY') se ...

  6. Nginx 扫盲

    layout: post title: Nginx-扫盲 category: Nginx tags: [代理] Nginx 基本安装和配置文件讲解 简介 轻量级web服务器.反向代理服务 负载均衡策略 ...

  7. 开始使用Apache弗林克和Mapr Streams

    Introduction MapR Ecosystem Package 2.0 (MEP) is coming with some new features related to MapR Strea ...

  8. PHP 学习1.4

    1.session and cookie 示列: <?phpsession_start();?><!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...

  9. 【JZOJ3216】【SDOI2013】淘金

    ╰( ̄▽ ̄)╭ 小 Z在玩一个 叫做<淘金者>的游戏.游戏的世界是一个 二维坐标 .X轴.Y轴坐标范围均为1..N.初始的时候,所有的整数坐标点上均有一块金子,共 N*N 块. 一阵风吹过 ...

  10. ubuntn 18 开起ssh 并用root远程登陆

    原文:ubuntn 18 开起ssh 并用root远程登陆 版权声明:本文为博主原创文章,随意转载. https://blog.csdn.net/Michel4Liu/article/details/ ...