我们先来了解Android系统的启动过程,从而清楚Android的框架分层,以一些常见的功能为例,可以看到从上到下的调用过程。 在这个过程中,处于不同的进程中,从用户空间到内核空间,又是如何进行调用的?
因为Android是基于Linux系统发展而来的, 那么在Linux中有哪些IPC的方式, 在Android上又进行了哪些优化呢?Binder是专门为Android而设计的吗?起源于哪里?设计的目的、实现方式、优缺点、具体使用方法又是怎样的呢?带着这些问题,沿着这个思路,我们一一展开来讲。
Android系统的启动过程
Android系统的分层
Android系统可以从上到下,划分为:应用、框架、动态库、内核驱动, 每层之间通过Binder、JNI、HAL、等不同的方式,进行函数级别的调用。
三种调用方式
在Android系统中,有三种主要的,典型的调用方式,或者叫调用路径:
(1)App-->Runtime Services-->Lib, 典型的例子是Location Manager,可以见下图:
(2)App-->Runtime