Google生态系统

Android系统架构

Android系统架构的经典示意图

它将Android大致分为四层:

  1. Linux Kernel 内核层
  2. 库和运行时 (Libraries + Android RunTime)
  3. FrameWork层
  4. 应用层 Applications

Android的体系架构鼓励系统组件的重用,共享组件间的数据,并且定义组件间的访问权限控制。可以说这些层次结构既是相互独立又是相互关联的。

Linux层

**Linux层,**Andorid最底层最核心的部分,**包含了Android系统的核心服务,包括硬件驱动、进程管理、安全系统等等**

- Dalvik and ART
Dalvik包含了一整套的Adnroid运行环境虚拟机,每个App都会分配Dalvik虚拟机来确保相互之间不受干扰,并保持独立。 Dalvik的特点是运行时编译。
ART: 在Android 5.X的版本开始,ART模式已经取代了DalvikART采用的是安装时编译,以后运行时就不用编译了。
当让了,对在其虚拟机环境中运行的大部分APP来讲,他们都运行着相同的代码。
- Application Framework

应用框架层

Framework层为我们程序开发提供了非常方便的API,
我们可以称Framework层才真正是Java语言实现的层,在这层里定义的API都是用Java语言编写。但是又因为它包含了JNI的方法,JNI用C/C++编写接口,根据函数表查询调用核心库层里的底层方法,最终访问到Linux内核。
那么Framework层的作用就有2个。
1.用Java语言编写一些规范化的模块封装成框架,供APP层开发者调用开发出具有特殊业务的手机应用。
2.用Java Native Interface调用core lib层的本地方法,JNI的库是在Dalvik虚拟机启动时加载进去的,Dalvik会直接去寻址这个JNI方法,然后去调用。
2种方式的结合达到了Java方法和操作系统的相互通信。

简单的介绍下Framework层部分框架的功能:

Activity Manager

用来管理应用程序生命周期并提供常用的导航回退功能。

Window Manager

提供一些我们访问手机屏幕的方法。屏幕的透明度、亮度、背景。

Content Providers

使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。

View System

可以用来构建应用程序, 它包括列表(Lists),网格(Grids),文本框(Text boxes),按钮(Buttons), 甚至可嵌入的web浏览器。

Notification Manager

使得应用程序可以在状态栏中显示自定义的提示信息。

Package Manager

提供对系统的安装包的访问。包括安装、卸载应用,查询permission相关信息,查询Application相关信息等。

Telephony Manager

主要提供了一系列用于访问与手机通讯相关的状态和信息的方法,查询电信网络状态信息,sim卡的信息等。

Resource Manager

提供非代码资源的访问,如本地字符串,图形,和布局文件(Layout files )。

Location Manager

提供设备的地址位置的获取方式。很显然,GPS导航肯定能用到位置服务。

XMPP

可扩展通讯和表示协议。前身为Jabber,提供即时通信服务。例如推送功能,Google Talk。

………等等

  • Standard libraries

    这里包含的是Adnroid中的一些标准库。
  • Application
    What Android Is

Android App 组件框架

四大组件: Activity 、Service、ContentProvider、 BroadCastReciever .

Android四大组件是如何协同工作

Intent
Activity作为人机交换的第一界面,负责向用户展示信息和处理结果,而这些信息的来源可以通过资源获取,也可以通过ContentProvider来获取其他应用的信息,或者Service从后台获取,当然了也可以是通BroadCastReciever获取到的广播信息。
组件和组件之间通过Intent通信、传递信息、交换数据,形成了各自独立又紧密联系的关系。

应用运行上下问对象

context
Android系统的上下文对象,即在Context中。
Activity Service Application 都继承自Context。
Android应用程序辉仔如下所示的时间点创建应用上下文Context。
- 创建Application
- 创建Activity
- 创建Application

从中我们可以看出,创建Context的时机就是在创建Context实现类的时候。

当应用程序第一次运行时,Android系统都会创建一个Application对象,同时创建Application Context对象,所有的组件都共同拥有这样一个Context对象,这个应用上下文对象贯穿整个应用进程的生命周期,为应用全局提供了功能和环境支持。

而创建Activity和Service时,系统也会为他们提供运行时的上下文环境,即创建Activity实例、Service实例的Context对象。

所以,我们可用直接在Activity中直接通过this的方式获取Context对象,而在匿名内部类中,就必须使用 XXXActivity.this的方式才可以获取Context对象。

当然 你也可以通过getApplicationContext()方法获取整个APP的Context对象,但是通过getApplicationContext()获取到的Context是整个应用的上下问对象,这个与某个组件的上下文对象在某些时候还是有区别的。

Adnroid系统源代码目录和系统目录

源码目录啥的暂时略过吧,目前也钻研不懂,等回头有精力了再来膜拜。

Adnroid体系与系统架构相关推荐

  1. 网贷风控体系之-系统架构

    网贷风控体系之-系统架构 目前常见的大数据架构是基于实时大数据处理框架Lambda架构.Lambda架构的数据通道分为实时流和离线两部分.流式通道处理为保障实效性更多的以增量计算为主辅助参考,而批处理 ...

  2. 我是如何通过系统架构设计师考试的(2017年软考)

    2017年,时隔7年之后,我又一次参加了计算机技术与软件专业技术资格(水平)考试,报考的科目为<系统架构设计师>,这是一个高级资格考试.上一次参加软考时的高级资格考试还只有<系统分析 ...

  3. 我是如何通过系统架构设计师考试的(2017年软考)-转载

    http://shashanzhao.com/archives/971.html 以下内容转载自https://blog.csdn.net/taohe_0/article/details/789948 ...

  4. 信息安全体系三种不同的系统架构:MIS+S、S-MIS S2-MIS

    一.MIS+S系统架构 初级信息系统安全保障系统或基本信息安全保障系统.这种体系具有如下特点: 业务应用系统基本不变 硬件和系统软件通用 安全设备基本不带密码 不使用PKI/CA技术 二.S-MIS ...

  5. 转:一套大而全的系统架构体系与具体落地方案

    原文地址: https://new.qq.com/omn/20171229/20171229B02VYY.html 本文根据DBAplus社群第131期线上分享整理而成,文末还有好书送哦~ 讲师介绍 ...

  6. 百度基础体系首席架构师林仕鼎分享系统架构领域论文精要

    所谓"理论联系实际"."万变不离其宗".学术界的论文常常是指导工业界的圭臬,特别是在计算机相关科学领域:快速的发展,常常有赖于学术界几篇论文的突破. \u002 ...

  7. 一套大而全的系统架构体系与具体落地方案

    欢迎关注原创公众号: 你们公司的IT系统架构是怎样的?又如何具体落地?采用了哪些开源或是商业的技术? 其实之前也写过或是做过一些关于系统架构的分享,或多或少的个人或其它限制,总觉得未能尽兴,留有遗憾. ...

  8. linux 删除分区_详解linux系统架构--文件系统体系

    概述 之前已经对Linux系统架构的内核部分单独做了深入介绍,今天就拿Linux系统架构中的文件系统做一下介绍吧~先介绍下概念: 文件系统是文件存放在磁盘等存储设备上的组织方法.Linux系统能支持多 ...

  9. 大流量网站的底层系统架构

    动态应用,是相对于网站静态内容而言, 是指以c/c++.php.Java.perl..net等 服务器端语言开发的网络应用软件,比如论坛.网络相册.交友.BLOG等常见应用.动态应用系统通 常与数据库 ...

最新文章

  1. 设计模式 -(5)装饰模式(结构型)
  2. Visual C++——《可视化编程技术》实验报告——绘图与文本操作
  3. python读取第二行_从CSV文件读取第二行到Python
  4. 草稿 断开式数据连接
  5. 实用的 PHP 正则表达式
  6. 电阻分压计算,电阻选型
  7. GPU硬件加速原理 /转
  8. 基于单片机的电子万年历的设计
  9. android 外接扫码枪_Android设备获取扫码枪扫描的内容与可能遇到的问题解决
  10. ArcGIS Desktop 10.1 的系统自带的 prj 文件的去哪了?
  11. 城联优品入股浩柏国际进军国际资本市场,已完成第一步
  12. 里氏代换原则(企鹅是不是鸟!)
  13. Python生成正则测试数据
  14. 计算机组成原理——作业2
  15. Java接口回调的概念和作用
  16. openGauss 数据库操作步骤
  17. 通过淘宝API接口获取SKU标题、SKUID、SKU价格、总库存以及各SKU库存
  18. HTML+JS 画图板
  19. 小程序+秒杀+laravel框架编写
  20. 高龄白菜java学习第九十八、九天(java数据结构和算法(17))

热门文章

  1. C++ >>和<<读写文本文件
  2. Pangolin在cmake时报“Could NOT find GLEW”错误
  3. redis 安装后不能使用
  4. webpack打包vue反编译_2020年你必须知道的webpack打包优化方法
  5. myisam为什么比innodb查询快_InnoDB 和 MyISAM的数据分布是什么样的?
  6. Leetcode 69 x的平方根 (每日一题 20210805)
  7. Java面试题集锦,Java常见面试问题汇总,有需要的小伙伴看过来
  8. 3万字长文记录Docker 最全学习笔记,手把手带你入个门
  9. tableau必知必会之VMware 搭建 Tableau Server for Linux 单机环境
  10. python循环输入字典_python - 使用'for'循环迭代字典