android各层之间,Android运行程序在各层架构之间的相互关系
在Android中运行的应用程序都是通过以下三种方式来层层深入:
1.App->Runtime Service->Lib
2.App->Runtime Service->Native Service->Lib
3.App->Runtime Service->Native Daemon->Lib
App->Runtime Service->Lib方式:
1.application层由Binder IPC调用application framework 层中Runtime Service
2.Runtime Service通过JNI调用Libray层中的Native Service Binding
3.Native Service Binding通过动态加载的方式来调用HAL Library层的东西
4.HAL Library再调用Linux内核层的Kernel Driver。
App->Runtime Service->Native Service->Lib:
此方式一般被Android原生服务所采用。
1.application层由Binder IPC调用application framework 层中Runtime Service
2.Runtime Service通过JNI调用Libray层中的Native Service Binding
3.Native Service Binding通过Binder IPC机制来调用Native Service
4.Native Service通过动态加载的方式来调用HAL Library层的东西
5.HAL Library再调用Linux内核层的Kernel Driver。
于第一种方式相比,只多了一个通过IPC机制调用原生服务并进行动态加载的过程。
App->Runtime Service->Native Daemon->Lib:
此方式一般用于守护进程的连接。
1.application层由Binder IPC调用application framework 层中Runtime Service
2.Runtime Service通过JNI调用Libray层中的Native Service Binding
3.Native Service Binding通过Socket机制调用Native Deamon 进程
4.Native Deamon 进程通过动态加载的方式来调用HAL Library层的东西
5.HAL Library再调用Linux内核层的Kernel Driver。
这种方式比原生服务的调用简单,它直接通过JNI绑定原生服务,通过sockets调用守护进程进行动态加载。
注释:内容来自《Android技术内幕》
android各层之间,Android运行程序在各层架构之间的相互关系相关推荐
- Android Studio 连接雷电模拟器运行程序
Android Studio 连接雷电模拟器运行程序 安卓默认虚拟机导航栏总是遮挡布局,不如试试自己下一个模拟器吧! 首先进入雷神菜单栏点击软件设置设置为手机模式 进入设置,连续点击"版本号 ...
- Android 创建单独的服务运行在后台(无界面)
今天项目有个需求是,开启一个服务单独运行在后台,而且还不能有界面,在度娘搜索了一圈也没发现可以完美解决的方法,然后自己尝试解决的方法,开始的思路是,把界面干掉,也就是activity,然后将开启Ser ...
- android studio 链接编辑,Android Studio怎么连接手机测试程序?
Android Studio是谷歌推出了新的Android开发环境,开发者可以在编写程序的同时看到自己的应用在不同尺寸屏幕中的样子.同时谷歌对开发者控制台进行了改进,增加了五个新的功能. 方法步骤 1 ...
- 1.Android简介,Android Studio安装,创建运行Android程序
文章目录 1.了解通信技术 2.Android简介 2.1 Android起源 2.2 Android历史版本 3.Android Studio开发环境的搭建 3.1 Android Stud ...
- Android开发-创建安卓工程项目+安卓程序的运行
文章目录 前言 一.为什么学习Android 1.1.什么是Android 1.2.Android的特点 1.3.Android开发的前景 二.Android studio 三.创建安卓工程项目 四. ...
- android焦点切换,android – 使用FLAG_ACTIVITY_REORDER_TO_FRONT在持续运行的UI活动之间切换会导致“无窗口焦点”错误...
我的目标是保持两个UI活动,并在它们之间来回切换,而不必杀死/重启其中任何一个.但是使用FLAG_ACTIVITY_REORDER_TO_FRONT执行此操作会产生严重的副作用:当我恢复上一个活动(当 ...
- android开机自动运行程序
背景知识:当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字符串常量表示为 android.intent.action.BOOT_COMPLETED. ...
- android项目获得所有运行程序
首先也是要建立一个javabean package com.itheima.bean;import android.graphics.drawable.Drawable;public class Ta ...
- Android Studio Terminal 不是内部或外部命令,也不是可运行程序或批处理文件
版权声明:本文为博主原创文章,未经我的允许不得转载! 转载请标明出处: http://blog.csdn.net/guiying712/article/details/53129961 ,本文出自:[ ...
最新文章
- 中科院亚热带生态所赵杰:喀斯特生态系统土壤微食物网组成与功能
- 计算机教案word格式模板,用自定义模板编辑教案
- 各种操作系统ping时的TTL值
- python 均方误差_一个很随意的Python智能优化库,一个文件就是一个库-- PySwarm
- 洛谷 - P1361 - 小M的作物 - 最小割 - 最大权闭合子图
- 前端开发课件 202002
- Java高并发编程详解系列-Java线程入门
- [转]CMS Content Management System(内容管理系统) 提供商
- python 执行shell_python执行shell命令四法
- 通过QQ音乐接口,做的一个简易微信小程序播放器
- 稳定的货源社区源码分享丨新版云乐购免费开源
- 纸牌游戏程序设计要点(C语言)
- Sqlmap使用教程【超全】
- BZOJ4874:筐子放球
- 微信小程序开发(创建项目介绍)
- 论文笔记--用于人体姿势估计的深度双连续网络(Deep Dual Consecutive Network for Human Pose Estimation)
- 桌面运维问题快速定位原因的常用基本思路
- Go channel 通道
- 在不借助第三方变量情况下实现两个变量的交换(借助于异或运算)
- PHP word ppt pdf 转图片
热门文章
- docker的安全管理与TLS/LLS加密通信
- 电脑销售渠道_为园区企业搭建服务麦格米特,长城电脑等企业产业链销售渠道...
- P1582 倒水(二进制)
- 云栖首日:智物智造宣布3年10亿目标
- 活动回顾 | 8月7日Apache Flink Meetup
- 对话李飞飞,展望阿里云与MongoDB战略合作未来
- 我们找阿里云资深技术专家李响聊了聊开源和云原生
- 阿里中间件性能挑战赛启动,“开源”赛题独家剖析!
- Unity 5 来了!引领开发引擎进入次时代
- 用诸葛孔明的智慧,读懂新型数据中心的“四新”机遇与产业逻辑