(二)Android Framework概述

什么是Android FrameWork,请你介绍一下? Framework的中文意思是“框架”,在软件开发中通常指开发框架,在一个系统中处于内核层之上,为顶层应用提供接口,被设计用来帮助开发者快速开发顶层应用,而不必关心系统内核运行机制,通常Framework都会隐藏main函数等应用程序必须的组件,开发人员只需把精力放在功能代码的实现上。Android Framework建立在顶层应用与C/C++库之间,主要由三部分组成:服务端、客户端、Linux驱动。 阅读详情

1. 写文章之前的声明:首先,文章写上原创标签是有点牵强的,本质上是读书笔记。上周周六的时候参加了博文视点的一个作者交流会,编辑送我了一本android内核方面的书《Android内核剖析》,拿回来读了一下,非常的棒。首先作者知识丰富,对android认识很到位,水平比很多其他Android编者高不少。其次,水平高正常,写书的吗,都有点水平,但是作者写书的时候,非常用心,语言通俗易懂,干脆。这点就非常的难了。自己写书的时候就有感觉,知道是一回事,表达出来,表达的清楚,又是另外一回事。最后,系列文章适合对android有一定认识的朋友,没有android基础的,不要看,浪费时间。

2.写这些文章的意义:书中有大量的内核分析,其实对于应用层开发人员来说,这些东西用不上,我仅仅是把做应用程序开发用的上的东西抽出来,然后加一些自己的东西。

 

 Android框架可以大致分为三块:服务端,客户端,linux驱动,下面一一解释。

 

服务端:

        罗嗦两句,服务端是相对于客户端来说的,就是给客户端提供服务的模块,不是什么真正意义上的服务器。举个简单的例子,现在的J2EE项目都在讲分层,那么下一层可以看到上一层的服务端,而上一层可以看到下一层的客户端。服务端有两个重要的类:WindowManagerService和ActivityManagerService,通过名字,我们就知道它们是干什么的了,一个是为窗口调度服务,另一个是管理所有的Activity。

        除此之外,服务端还包括两个消息处理类,KeyQ和InputDispatcherThread,keyQ主要工作是接受用户输入,并把输入存放在一个消息队列中。显而易见的,InputDispatcherThread的作用就是不断消费消息队列中的用户事件,然后经过过滤,发送给当前活动的客户端。

 

客户端:

      客户端的情况就更复杂一些,大家都是做“客户端”的,应该明白哇,嘿嘿。下面就介绍一些平时用得上的或者可以了解的。

      ActivityThread:该类是应用程序的主线程类,也就是UI线程类,所有的APK程序都有且仅有一个ActivityThread类,程序的入口为该类的static main()。

      Activity:这个就不解释了,ActivityThread会根据用户操作选择运行合适的Activity对象。

      Windows:该类提供了一组通用的窗口操作API。

      WindowManager:当创建窗口的时候,由它和服务端的WindowManagerService完成。

 

linux驱动:

      这个就和我们应用程序员不搭嘎了,就不写了。

 

几个常见的问题:

 

1.UI线程和普通线程最大的区别是什么:UI线程是系统创建的,在创建的时候,设计成了异步消息处理线程。具备处理消息的能力,可以直接使用Handler给UI线程发送消息。而普通线程,如果自己不添加Looper对象,并启动消息处理循环,那么,不具备处理消息的能力,也就是不能使用Handler给该线程发送消息。

2.Activity之间如何传递消息:

          A.一般情况下,设备上只会有一个Activity在运行,因此,多个Activity之间传递数据不是必需的。如果某个Activity需要在停止后还能处理数据,那么这个Activity设计成为Service或者Thread更加合适。

          B.在一般的应用程序架构下,不同组件传递数据的通用方式有两种:可以先实例化某个类,获得该类的引用,当其他类需要该类对象的内部数据时,就可以直接通过该引用完成。也可以通过第三方,比如全局变量,或者一个单独的类来完成。

         C.然而,在创建Activity的时候,是系统完成的,我们不可能获得它的引用。所以第一种解决办法不可行。

         D.当然,第二种是肯定可以完成的,android为了规范,特别给我们提供了一个全局的对象Application,我们可以通过它来完成多个Activity之间的数据传递。

         E.其实,在android中,Activity之间传递数据,最常用的是Intent

         F.另外,从设计理念上,Android认为,Preference,文件,数据库都是理想的传递数据的工具

 

Android Framework学习二:Activity创建及View绘制流程 当一个应用程序创建一个窗口(例如 Activity 的界面)时,它会向 WMS 发送请求。根据窗口的属性(如大小、位置、层级等)将其添加到窗口管理列表中。每个窗口都有一个或多个 Surface 与之关联。当应用程序需要绘制窗口的内容时,它会通过 Surface 来获取绘图的上下文,然后使用图形库(如 OpenGL)在 Surface 上进行绘制。 Activity包含PhoneWindow、DecorView、ViewRootImpl等 其创建流程如下 阅读详情

相关推荐

如何学习 Android Framework ?如何从应用深入到 Framework?

大部分有 “如何学习Framework源码” 这个疑问的,应该大都是应用层开发。 应用层是被 Framework 层调用执行的,知道自己的代码是怎么被调用的,才能理解程序的本质,理解本质有助于解决遇到的新问题,同时才有更多方法去优化应用层逻辑。 目前大公司的App开发都要基于模块化、层次化、组件化、控件化的思路来设计架构,而这一切的基础都建立在 Android Framework 系统框架底层原理实现之上,所以与它相关的知识都尤为重要。 那我们如何学习 Framework 呢? 关于如何学习 Androi

qq_44102588的博客 1581

深入Android Framework开发(入门篇)

广大的Android应用开发者是不是对Android系统充满着好奇,是不是很想学习Android系统开发,可惜自己学习难度又太大,本课程将手把手教你学Android Framework开发,带你走进Android系统开发的殿堂,全课程以实战为主,让你自己动手可以定制自己喜欢的Android系统,让你的Android职业道路越走越顺。 学完本课程能让你学会如下知识点: -学习Framework背景及它的巨大作用-Android源码环境搭建及让自己系统第一次跑起来-学习Frameowork开发的一些必要基础知识-学习怎么进行Android源码定位分析,实例:Activity启动流程源码分析-实战开发Frameowork项目--去除第三方应用入口广告页

Android Framework概述

Android系统架构分为5层:应用层、Framework层、系统运行库层、硬件抽象层(HAL)和Linux内核层。核心组件包括基于Linux定制的内核、ART虚拟机、HAL硬件抽象层以及丰富的系统运行库(Core Libraries)。Framework层采用Java语言编写,提供三大核心组件:View、ActivityManagerService和WindowManagerService,通过服务端与客户端架构及Binder IPC机制实现跨进程通信。

学无止境 9637

全网最全最通俗易懂的Android Framework知识点汇总,入门到精通,完全学会

Framework其实可以简单的理解为一些API的库房,android开发人员将一些基本功能实现,通过接口提供给上层调用,可以重复的调用我们可以称Framework层才真正是Java语言实现的层,在这层里定义的API都是用Java语言编写。但是又因为它包含了JNI的方法,JNI用C/C++编写接口,根据函数表查询调用核心库层里的底层方法,最终访问到Linux内核。那么Framework层的作用就有2个。用Java语言编写一些规范化的模块封装成框架,供APP层开发者调用开发出具有特殊业务的手机应用。

m0_64365896的博客 1万+

数据库decimal类型详解:精度、标度与金额计算避坑指南

在关系型数据库中,浮点数精度丢失是常见问题,尤其涉及金额计算时,一分钱误差都可能导致对账失败。decimal类型通过十进制存储方式,将小数当作定点数处理,避免了二进制转换误差,确保运算结果精确。其核心在于精度和标度的合理定义,以及运算舍入规则的控制。在电商订单、汇率转换、税务计算等场景中,decimal是保障数据准确性的关键技术。理解其存储原理和实操细节,能有效规避隐式转换、聚合函数精度等常见坑点,提升系统可靠性。

weixin_32050773的博客 270

四阶龙格库塔法求解一次常微分方程组(python实现)

之前在博客发布了关于使用四阶龙格库塔方法求解一次常微分方程组的文章,由于代码缺少具体的验证,部分朋友可能存在疑问,因此这里打算再重新写一篇博客来验证一下程序的正确性,另外,这里是使用python语言来实现的。

HelloWorldTM的博客 8542

安卓系统框架和Framework概述

安卓系统框架和Framework概述

似霰的博客 1万+

WPS制作甘特图实操(带图超详细)

一、数据准备 图1 二、添加公式 在表格的E3处添加公式:=IF(C3>=G3,0,IF(C3+D3>=G3,G3-C3,D3)),点击该单元格的右下角。使鼠标箭头变“+”后下拉拖拽,复制该公式。F3处的公式为:=D3-E3,使用相同的拖拽方式复制公式应用,操作完毕如下图3. 图2 图3 三、插入图表 1、选中方框1内容,按住ctrl按键,继续选择2、3列的内容,点击插入全部图表中的条形图,选择2对应的图标样式,生成图6的样式。 点击图6中的3标尺,右击选择数据弹出图8,点击+号选择表格中

m0_49047167的博客 3万+

全网最全Android Framework框架总结,Android如何入门Framework层

但是系统学习不是必须的,只有从事系统定制开发的同学,才有必要学习,其他人完全没必要,没有必要弄明白按下开关发生了什么?点亮屏幕是怎么做的?

Eqiqi的博客 3137

上网第二课:办了百兆宽带,为什么测速只有一半?

最慢的那一环。

qq_36765170的博客 106

海量Embedding进行相似度查询和比较的方法

这个是在科研中的现实需求。例如每一个源代码文件,我们可以生成一个embedding,如果有超过5000万个embedding(例如用BERT生成5000万个embedding),怎么样有效地计算相似性呢(例如有5000个positive的embedding,想在5000万个中找到类似的)。 简单介绍一下我尝试的结果:如果直接用torch.cosine_similarity,我手里的数据估计至少要处理两个月。这时候就想到了用LSH -- Locality Sensitive Hashing,但是我之前并没怎

qysh123的专栏 4566

Android控件系统(二)——Framework概述

Framework框架   Framework定义了客户端组件和服务器端组件功能及接口,包含3个部分:服务端、客户端和linux驱动,如下图所示:   Framework中所包含的服务是非常多的,为了清晰的描述服务端、客户端和linux驱动三者的关系,我们只是描述了它们其中的一小部分,这一小部分也是为后续讲解窗口的创建、Activity启动、绘制、事件分发服务的。 服务端   服务端主要包含两个...

weixin_34378767的博客 167

30. 如何使用 SEGW 的 redefine 功能对 SAP 标准 OData 服务进行扩展

SAP 发布了很多标准的 Fiori 应用,可以通过笔者的文章里提到的进行浏览。比如 My Opportunities 就是 SAP CRM 领域的一个 Fiori 应用:下图是 Opportunity 明细页面的 Info 标签页:假设我们想在这些标准字段的末尾增添一个新字段 Created By,用来维护当前 Opportunity 的创建者。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1170

Android Framework 探秘

安卓的Framework(框架层)是安卓系统的核心组成部分,位于应用层和系统底层(如Linux内核)之间,负责为应用提供统一的接口和功能支持。1. 定义与作用API库集合:Framework层是用Java语言实现的一系列API库,封装了安卓系统的核心功能(如Activity管理、窗口管理、包管理等),供应用开发者直接调用。桥梁作用:通过,Framework层可以调用底层的C/C++库(如媒体库、图形库)和Linux内核功能(如进程管理、内存管理),实现对硬件和系统的控制。核心目标。

zhengzhiyu__的博客 2269

【camera-radar】基于ROS的多传感器融合感知系统实现(雷达+相机)(2)

实现功能:代码下载地址:下载地址 1)基于深度学习的目标检测;2)基于雷达的距离估计和预测;3)多传感器感知结果融合模块。 相机感知模块解析 4. Run nodes: python3 fusion_node/main.py python3 gps_node/main.py python3 radar_node/main.py python3 2d_detection_node/main.py #(additional instructions in 2d_detection_node/README.m

踟蹰横渡口,彳亍上滩舟。 9950

Halcon 色彩标定:RGB空间下实现白平衡与CCM矩阵合成静态HDR图像

摘要 本文介绍了一种基于Halcon的色彩校正方法,结合白平衡与灰轴约束最小二乘法实现精准颜色还原。方法分为三步:1)自动定位色卡区域并提取灰阶块计算白平衡增益;2)通过前三列色块建立测量值与标准值的映射关系;3)引入灰轴约束条件求解色彩校正矩阵(CCM),确保中性灰区域不偏色。算法采用中位数计算白平衡增益以提高鲁棒性,并通过旋转校正处理色卡倾斜问题。实验表明,该方法能有效消除相机采集的系统色偏,适用于颜色测量、表面检测等机器视觉场景。文末提供了完整代码实现。

LIN943168247的博客 404

Android 系统framework 概述

http://hi.baidu.com/qingmugong/item/27a18b54ccfe059e09be17af Android 系统framework 概述 一、android是什么? 二、android的开发工作 Android的开发分为三个类型: 移植开发移动设备系统; android系统级开发 应用程序开发。 1、移植开发

Skypine_Lee的专栏 1919

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

安卓Framework 层详解

Android Framework 实际上分为两个主要部分: 一、Java Framework 层详解 1.1 定义和位置 Java Framework 是用 Java 编写的框架层,位于: 1.2 核心作用 作用 1:提供应用开发 API 这是开发者直接使用的 API 层: 提供的 API 包括:许多系统服务的主要逻辑用 Java 实现: 作用 3:封装和抽象底层实现 Java Framework 隐藏了底层复杂性: 1.3 Java Framework 的主要模块 模块

weixin_74166153的博客 2036

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

4.Android内核 Framework概述

想过没?Android程序的入口在哪里?Android Framework都包含哪些必需的系统服务?这个学

Save you from anything 2619

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android Framework开发环境搭建

本文分享下在Windows和ubuntu系统搭建framework 开发环境的过程。Window系统版本win11。

blueheart05的专栏 860

Android Framework的启动概述

安卓系统中运行的第一个Dalvik虚拟机叫做zygote,意思是“卵”。这“卵”还是挺有用的,因为接下来所有的Dalvik虚拟机进程都是这个“卵”孵化出来的。 zygote进程中包含两个主要模块,分别如下: 1、Socket服务端。用于接收启动新的Dalvik进程的命令。 2、Framework共享类及共享资源。当zygote进程启动后会加载一些共享的类及资源,其中共享类是在preload-...

淡淡的宁静的博客 176

初学安卓framework系列 二 (安卓framework怎么给开发者赋能)

这篇文章我通过通话功能来简单的介绍了一下Framework下面的一个模块的设计理念。希望能给大家一些启发,给读者们自己在设计平台的时候带来一丢丢帮助!作者:qing的世界链接:https://juejin.cn/post/7110746560559841311来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

chuyouyinghe的专栏 531
上一篇: (一)Android 异步消息处理
下一篇: 我所了解的LBS
coding_or_coded
博客等级 码龄16年 216粉丝 115原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值