所有的android的app启动都有三种深入启动的方式:

  ①app——Runtime Service——Lib

  这种启动方式是:

  Ⅰapp程序中启动application framework 层中Runtime Service

  ⅡRuntime Service通过jni调用Libray层中的Native Binding

  ⅢNative Binding通过动态加载的方式来调用HAL Library层的东西

  ⅣHAL Library再调用Linux Kernel的东西 相应示意图如下:

  ②app——Runtime Service——Native Service——Lib

  Ⅰapp调用application frame work 中的runtime service

  Ⅱruntime service 通过jni机制来调用natvie service binding

  Ⅲnative service binding 通过远程的IPC机制来调用native  service

  ⅣNative Service通过动态加载的方式来调用HAL Library层的东西

  ⅤHAL Library再调用Linux Kernel的东西 相应的示意图如下:

  

  ③app——Runtime Service——Native Deamon——Lib

  

  Ⅰapp调用application frame work 中的runtime service

  Ⅱruntime service 通过jni机制来调用natvie service binding

  Ⅲnative service binding 通过socket机制调用native  deamon 进程

  Ⅳnative  deamon 进程通过动态加载的方式来调用HAL Library层的东西

  ⅤHAL Library再调用Linux Kernel的东西 相应的示意图如下:

  这就是app在android各层中调用理解三种形式。

Android 各层调用的方式的更多相关文章

  1. Unity3D调用android方法(非插件方式)

    关于Unity3Dproject与androidproject的转换与合并,请參考我的另外一篇博客.假设你对Unity3Dproject增加到androidproject的过程不熟悉.也请先看完以下这 ...

  2. Android JNI之C/C++层调用JAVA

    转载请声明:原文转自:http://www.cnblogs.com/xiezie/p/5930032.html 从C/C++层调用JAVA层代码步骤: 1. 在JAVA类中创建java方法和本地方法 ...

  3. Android JNI开发之C/C++层调用JAVA

    一.从C/C++层调用JAVA层代码(无参数调用) //在c代码里面调用java代码里面的方法 // java 反射 // 1 . 找到java代码的 class文件 // jclass (*Find ...

  4. Android NDK学习(四):C/C++层调用JAVA

    一.从C/C++层调用JAVA层代码(无参数调用) //在c代码里面调用java代码里面的方法 // java 反射 // 1 . 找到java代码的 class文件 // jclass (*Find ...

  5. Android系统JNI的实现方式

     Android系统JNI的实现方式 All rights reserved JNI(Java Native Interface)定义了一种Java代码调用C或者C++代码等其它代码的方式. 在A ...

  6. Android Hal层简要分析

    Android Hal层简要分析 Android Hal层(即 Hardware Abstraction Layer)是Google开发的Android系统里上层应用对底层硬件操作屏蔽的一个软件层次, ...

  7. 在Android Native层中创建Java虚拟机实例

    前言 Android应用中JNI代码,是作为本地方法运行的.而大部分情况下,这些JNI方法均需要传递Dalvik虚拟机实例作为第一个参数.例如,你需要用虚拟机实例来创建jstring和其他的Java对 ...

  8. Android native层动态库注射

    1.简单介绍 本文解说在Android native层.root权限下.注射动态库到目标进程,从而hook目标进程中动态库的函数的实现方式. 文中的源代码所有来源于网络.我仅仅是略微加以整理. 环境: ...

  9. Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)

    Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码) 来源 https://blog.csdn.net/jiangwei0910410003/article/details/51 ...

随机推荐

  1. webpack 的简单使用

    p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Helvetica Neue"; color: #323333 } p. ...

  2. checkbox全选

    jquery代码如下(在jquery1.10.2下验证通过): <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xh ...

  3. flask-admin章节四:flask session的使用

    1. 关于session flask session可能很多人根本都没有使用过,倒是cookie大家可能使用得比较多.flask cookie使用起来比较简单,就两个函数,读取和设置. 具体使用方式如 ...

  4. 用ajax动态获取数据显示在highcharts上

    html代码(index.html) <html><head> <meta charset="UTF-8" /> <title>Hi ...

  5. Mac打开关闭隐藏文件功能

    在终端输入: 打开:defaults write com.apple.finder AppleShowAllFiles -bool true 关闭:defaults write com.apple.f ...

  6. BOOTSTRAP定制

    1.补充:栅格系统中调整列的位置/顺序 (1)方法1:偏移量(col-*-offset-*) (2)方法2:对列进行push/pull操作 col-lg-pull-1        ~         ...

  7. sql server 2000数据库 最近经常出现某进程一直占用资源,阻塞?死锁?

    OA的数据库最近多次出现某进程一直占用资源,导致其他进程无法执行.使用sp_who2 和 sql server profiler跟踪查询,发现有以下几个语句常常占用资源: 1.declare @P1 ...

  8. struts2中如何使用主题theme

    一.什么是主题? 主题就是一种风格化标签,能够让所有UI标签能够产生同样的视觉效果而归集到一起的一组模板,即风格相近的模板被打包为一个主题 二.struts2提供的主题有哪些呢?struts2中如何修 ...

  9. javascript 日期转换为中文

    function CNDateString(date) { var cn = ["〇","一","二","三",&quo ...

  10. yii使用createCommand()增删改查

    查询单条数据$sql = "SELECT `name` FROM `table` WHERE id='7'";$users=Yii::$app->db->createC ...