Android框架揭秘读书笔记

Android Framework层开发 SystemUI路径:framework/base/package/systemUI/安装mingw,配置环境变量,即可用 gcc(类似Java的JVM)命令编译c文件;写C的工具:CodeBlocks预处理指令:#include 预处理器会对其处理条件编译指令: #if #else #elif #endif宏定义:#define PI 3.14可视化输入: scanf(“%d”, &a)C是没有GC的!C的碎片管理是依托于OS的碎片整理机制。 阅读详情

Android启动过程

1.linux内核,加载linux内核

2 init 进程对各种设备进行初始化,

执行Daemon进程,管理USB、ADB链接管理器、Debugger系统、rild管理无线通信链接

Content Manager进程,提供运行Android各种系统服务信息

Media Server

Zygote进程用于缩短Android应用程序加载时间,每当Java应用程序时,Zygote就会派生出一个子进程来执行应用程序的虚拟机

System Server进程 Zygote进程创建,在Android启动过程中位于Zygote之后,运行的System Server提供给上层调用需要先将它注册到Content Manager中


Android与JNI

将Java层与C/C++有机的联系起来,使得他们互相协调,共同完成某个任务

java中调用C库

1,编写java代码

2,编译java代码 javac

3,生成C语言头文件

4,编写C代码

5,生成C共享库

6,运行java程序



java虚拟机使用函数原型将java代码和C代码映射到一起 javah


调用JNI代码。C调 java

1,创建java对象

2,访问静态成员域

3,调用类的静态方法

4,访问Jjava对象成员变量

5,访问Java对象的方法


Zygote

1,运行时会初始化虚拟机,并启动它

AppRuntime继承自AndroidRuntime用于初始化并运行虚拟机


registerZygoteSocket() 用于处理请求创建应用时fork进程

加载Framework中的类和平台资源preloadClasses()和preloadResources()

运行SystemServer


runSelectLoopMode() 进入循环,处理来自所绑定的套接字的请求



Android服务概要

服务有Android系统服务,应用服务两种

系统服务由Framework提供

应用服务由开发者继承并实现Service类后开发出来的


应用服务分为:本地服务,远程服务,区分方式是是否运行在同一个进程中


系统服务分为:本地系统服务,Java系统服务

本地系统服务(Audio Flinger 混合多种音频数据,并发送到耳机,扬声器,Surface Flinger 组合各种应用程序的Surface渲染到Frame Buffer),

Java系统服务分为:核心平台服务,硬件服务

核心平台服务

Activity Manager Service:管理所有的Activity的生命周期与堆栈

Window Manager Service, 位于Surface Flinger之上,将要绘制的机器画面上的内容传递给Surface Flinger

Package Manager Service 加载apk文件的信息,提供信息显示系统中设置的哪些包

硬件服务(用于控制底层硬件)

Alarm Manager Service 定时器

Connectivity Service 提供有关网络当前状态的信息

Location Service 提供终端当前位置的信息

Power Service 设备电源管理

Sensor Service 传感器感应值

Telephony Service 电话服务

Wifi Service 控制无线网状态

系统服务初始化代码

系统服务需要把相关信息注册到Context Manager中,以便Android应用程序在能够使用其提供的服务


主要术语定义




Android Binder IPC


Android Binder Driver

从进程的角度看服务使用

IPC过程分为服务注册,服务检索,服务使用

服务注册 Service Server 与 Context Manager间的IPC

服务检索 服务客户端与Context Manager间的IPC

服务使用 服务客户端与Service Server IPC 

从Binder的角度看服务的使用


Context Manager(服务注册,服务检索)

使用C语言编写,以便使其与Binder Driver紧密衔接


Android Service Framework


Native Service Manager


Service Server与Service Manager的关系


Java Service Framework

服务生成:Java服务方法有两种,1,继承Binder,aidl语言。2,继承Service开发

第一种,Java系统服务将服务注册到Context Manager中,然后通过Service Manager使用服务

第二种,Java应用程序服务由Activity Manager Service进行管理




Java Service Manager



Java系统服务运行分析

Activity Manager Service 创建Activity 服务 广播等,并管理他们的生命周期

Zygote创建进程后会把ActivityThread加载到新进程中 会创建Application和ActivityThread和loop


ActivityThread调用attachApplication()与ActivityManagerService建立连接  应用请求服务

ActivityThread通过attach建立ActivityManagerService连接  服务请求应用


Android进阶解密读书笔记(一)——Android系统架构 (Android4.4及之前使用的是Dalvik虚拟机,使用的是JIT(just in time)技术来进行代码转译,每次执行应用的时候,Dalvik将程序的代码编译为机器语言执行)位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化,隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可以在多种平台上进行移植。系统运行库层(Native) 系统运行层分为两部分:C/C++程序库、Android运行时库。Linux 内核层(Linux Kernel)硬件抽象层(Hal) 阅读详情

相关推荐

android framework 开发揭秘

android framework 实现细节,常见面试问题汇总

初识Android framework层

Android系统的构成如下,从上到下依次是 Application应用层 Framework框架层 LIbrary系统库层 Linux内核层 关于Framework层: Android的Framework是直接应用之下的一层,叫做应用程序框架层。这一层是核心应用程序所使用的API框架,为应用层提供各种API,提供各种组件和服务来支持我们的Android开发,包括ActivityMa...

mountain_hua的博客 1万+

iSLIP算法实战:如何用Python模拟交换机优先级匹配(附完整代码)

本文详细介绍了如何使用Python实现iSLIP算法,模拟交换机优先级匹配过程。通过核心的指针滑动逻辑和迭代循环策略,构建了一个完整的iSLIP算法模拟器,并加入可视化模块以直观展示匹配过程。文章还提供了完整的代码框架和性能优化建议,适合网络工程师和Python开发者直接集成到测试环境中。

weixin_29313239的博客 249

Android Framework原理

App启动过程 点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求 system_server进程接收到请求后,向zygote进程发送创建进程的请求 Zygote进程fork出新的子进程,即A...

测试0901-1 433

Databricks Genie:语义编译器架构与企业级智能解析实践

语义层是现代数据平台实现自然语言查询的核心基础,其本质是将业务术语映射为可执行、可治理的数据契约。原理上依赖结构化元数据、值字典与数据血缘三支柱协同,通过分层AI代理(如Intent Parsing、Retriever、Verifier)实现意图识别→语义对齐→安全执行的闭环。技术价值在于降低SQL使用门槛的同时保障审计性、一致性和权限可控性,适用于销售运营、财务分析等一线业务场景。本文深入解析Databricks Genie作为典型语义编译器的落地逻辑,涵盖Unity Catalog知识注入、七层Agen

weixin_29053695的博客 337

保姆级教程:手把手教你从ENSEMBL官网下载GRCh38/GRCh37的GTF注释文件(附网址规律总结)

本文提供从ENSEMBL官网下载GRCh38/GRCh37的GTF注释文件的详细教程,包括路径解析、版本号确定和下载命令示例。特别解析了GRCh37的特殊存储结构,并分享批量下载、文件校验等高级技巧,帮助生物信息学研究者高效获取基因组注释文件。

weixin_29289821的博客 204

Android几种FrameWork(Manager)的用法

一般地,安卓应用程序开发只关注架构图的最上层Application层,接下来是第二层Application Framework层,本文主要总结了一下WindowManager, PackageManager, NotificationManager的几种常见用法及其关键代码。

coralline_xss的博客 1967

[工具使用]黑暗引擎FOFA

黑暗引擎FOFAFOFA(点我进入)逻辑运算符搜索子域名domain搜索指定内容的host全部域名bodycert搜索选定应用的网站搜索指定开放端口的IP搜索指定协议的IP搜索IP或者网段的信息搜索指定CSS/JS网站常用的一些内容其他 FOFA(点我进入) 官网这样描述:FOFA是白帽汇推出的一款网络空间资产搜索引擎。它能够帮助用户迅速进行网络资产匹配、加快后续工作进程。例如进行漏洞影响范围分析、应用分布统计、应用流行度排名统计等。 简单理解就是,一个本土加强版shodan,知道某产品在互联网的部署情况、

网络安全知识分享 3万+

Android Framework开发大揭秘!从小白到大佬的进阶之路

由此可见,。它提供了软件开发的框架,使得开发过程更具和。其次,Framework 现已逐渐成为Android岗位的热门甚至必备技能,在招聘网站上随便找几个Android开发相关岗位,都会包含熟悉或掌握 Framework 这一要求。

yihanss的博客 3205

ANPC三电平拓扑:两种调制方式解析

ANPC结构是基于“I”型NPC结构(下面讲NPC如不特殊说明,均指的是“I”型结构NPC)发展出来的一种改进型。我们在讲NPC结构的时候会谈到他的一个缺点就是损耗分布不均匀,会导致温升不均衡,进而限制模块的功率输出能力。而ANPC结构由于多了两个开关管以及相应的两个中性点换流回路(如下图),可以更加灵活任意的配置开关管可以使损耗没有那么的不均衡,从而能一定程度上提高模块的输出功率。ANPC拓扑结构图以及增加的环流回路。

IOTBOT的博客 9481

Vivado安装教程:多版本共存的配置技巧

详解Vivado安装教程中的多版本共存配置技巧,帮助用户在同一系统中管理不同版本的Vivado开发环境,提升开发效率与兼容性,适用于需要切换版本的FPGA开发者。

weixin_35257663的博客 1774

《Android框架揭秘》读书笔记——JNI

形式 const jbyte* GetStringUTFChars(JNIEnv* env, jstring string, jboolean* usCopy) 说明 将Java字符串对象转换成UTF-8字符串(C字符串),并返回指针 参数 isCopy:当String对象中的祖父穿被转换成UTF-8字符串,被复制到内存,且指针被返回时,*isCopy设置为JNI_TRUE,否则设

我是Timothy 3090

从零配置华为S5720交换机VLAN:Web界面与命令行双模式详解(附拓扑图)

本文详细解析华为S5720交换机VLAN配置的全过程,涵盖Web界面与命令行(CLI)双模式操作指南。从基础环境准备到多交换机环境配置同步,特别针对S5720-52X系列交换机的VLANif接口、端口分配策略及交换机堆叠技术进行深入讲解,并附实用拓扑图与配置示例,助力企业网络管理员高效完成VLAN部署。

happy2的博客 1368

Android 框架揭秘 --读书笔记

Android 框架揭秘 Insied the Android Framework 转载于:https://www.cnblogs.com/drduan/p/4788554.html

weixin_30645617的博客 116

基于Python的异步爬虫实战:高效抓取同花顺概念板块数据

本文将详细介绍如何使用Python最新异步爬虫技术(requests-html+aiohttp+selenium)高效抓取同花顺概念板块数据。内容涵盖:反爬机制破解、动态页面渲染处理、数据解析存储等完整流程,并提供可复用的高性能爬虫代码实现。高性能:异步并发处理,QPS可达50+高可用:完善的异常处理机制可扩展:支持分布式部署增加历史数据回溯功能集成机器学习识别验证码构建实时数据推送系统。

2201_76125261的博客 1534

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

《Android框架揭秘》读书笔记--在Java中调用C库函数

简介 以下试验在Ubuntu16.04 x86,jdk安装:sudo apt-get install openjdk-9-jdk-headless,原书介绍的是在win系统实现。 步骤 第一步:编写Java代码 第二步:编译Java代码 第三步:生成C语言头文件 第四步:编写C代码 第五步:生成C共享库 第六步:运行Java程序 第一步:编写Java代码 创建He...

qiubinxiang2009的博客 581

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

[0]Android框架揭秘-概论

《Android框架揭秘》其实是韩国-金泰延写的一本书,个人觉得很赞。以前对Android的了解非常零散,但这本书系统讲述了Android的框架和实现原理,对系统的整体把握和原理了解非常有帮助。个人认为阅读任何代码,无论大小,千万不要一开始就去了解细节,试图读懂每一行代码,其实这样容易陷入万劫不复的境地,打击信心。要从框架角度,总结出原理,理出头绪及其运行流程。即先从宏观角度出发,再研究细节。

邓永坚的blog 1499

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

《最强Android书 架构大剖析》读书笔记

作为大多数守护进程的样板,init 代码的指令流程完全遵循建立服务的经典模式:初始化然后陷入一个循环中,而且永远不想从中退出来。在调用模式的设计的术语中,getSystemService()方法返回的对象只是一个“代理”(Proxy)。在这个对象内部记录着一个通过调用 binder 获得的指向实际服务的引用(reference),而该对象导出的各个方法,在大多数情况下实际上也只是一些 stub 容器而已,

yangjia_cheng的博客 4342

《Android应用开发揭秘》读书笔记——android学习目录

声明:学习的书籍《Android应用开发揭秘》,这里记录学习该书籍的日志,引用的相关代码与总结描述,没有商业的用途,完全是自我学习的一个记录。 开发环境JDK6.0+Eclipse3.6+android sdk 2.2,因为自己手机就是2.2版本的, 刚开始学没选最新版本。链接目录如下:【android基础学习之一】——事件的监听与触发 【android基础学习之二】——基础控件ListView

jercy的专栏 3046

Android 读书笔记-Framework概览(一)

参考书籍(Android框架揭秘-) 1.framework概要 图片: https://uploader.shimo.im/f/SwM0E9xkqKBmcRGt.jpg?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2MjQzNDUzMjYsImciOiJ5WDhQdFF0WGd3ZFloWXQ5IiwiaWF0IjoxNjI

wojiaomtaa的博客 460

《图解HTTP》读书笔记

硬件范畴用HTTP举例,首先发送端在应用层(HTTP协议)发出一个想看某个Web页面的HTTP请求。在传输层(TCP协议)把从应用层得到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号以及端口号后,发给网络层。在网络层(IP协议),增加作为通信目的地的MAC地址后,转发给链路层。第二章 简单的HTTP协议在HTTP协议的初始版本中,每进行一次HTTP通信就要建立、断开一次TCP连接。所以当一个html中包含多张图片时,这个问题更严重。为解决这个问题,提出了HTTP keep-alive。只要任

piade的博客 603

【读书笔记】iOS-微信公众平台搭建与开发揭秘

一,微信公众平台。 1,“再小的个体,也有自己的品牌”,这是微信公众平台的官方广告。 2,微信公众平台没有认证门槛,只需要一个邮箱和手持身份证照片。目前一个身份证号只可注册两个微信公众帐号。 二,LBS的开发。 1,LBS基于位置的服务(Location Based Service). 2,由于安卓系统微信默认调用的是Google地图,而iOS系统部分版本调用的是苹果公司自己的地图,...

weixin_30567471的博客 149

Android数据存储的4种方式

本文是>读书笔记 安卓数据存储方式有4种. 1.Share Preferences. 存储key-value paries格式的数据,轻量级的存储机制,类似于保存配置文件一样。 2.Files 通过FileInputStream和FileOutputStream对文件进行操作。基于linux的安卓,文件属于应有私有,所以不能共享。 3.Network. 访问网络存储数据。  4.S

cdkd123的专栏 2668
上一篇: Android中AIDL的作用是什么?它所支持的参数类型是?默认情况下AIDL的调用过程是同步还是异步?如何指定AIDL为异步调用?
下一篇: Android线程池有哪些?他们的区别是什么?为什么要使用线程池?
杨殿生
博客等级 码龄10年 11粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值