这篇文章有点像,之前我谈的对计算机的认识,都是很浅显,没有依据的一些理解。

之所以说没有依据,是我没有仔细的深究,因为,我看了很多资料,很难懂,不是很理解,却又理解一点点。自己不现在做一下梳理,再把这个事放一下,心里会很不舒服,反而会卡在这个地方,没法前进。

看不懂别人写的,是因为,基础不够。所以就简单的说一下。

首先呢,我认识到,Android是一个基于Linux系统的系统。什么是Linux呢?简单的说就是一个操作系统,是Unix的一种,可以说是他发展而来的。Linux内核里面集成了调用实体设备的驱动程序,用来驱动真实实体设备。并暴露接口调用给中间层。中间层可以分为两块:运行库和运行时。并封装了相应的接口调用给应用程序框架层。(系统运行库:当我们使用Android应用框架时,Android系统会通过一些C/C++库,来支持我们使用的各个组件。运行时:Android平台的虚拟机)。应用程序框架层封装了开发应用所需要的核心API,提供了丰富的组件。在应用层就是我们使用的APP。

上面只是一个静态的架构,看不出来整个Android的运行状况。他的设计就是这样的,上面两层是用JAVA语言,下面两层是C/C++语言。

从手机启动开始,我们来分析一下动态的过程。

首先,通过bootloader(系统加载器,这一部分是固化在手机硬件中的)加载Linux内核。在Linux内核加载启动时,与普通的得Linux启动过程相同,先初始化内核,然后调用init进程。init进程启动zygote它解配置文件init.re(系统配置文件)及initXXX.rc(与硬件平台相关的文件,单片机中外接的硬件,要初始化某些设置一样吧,我我理解是这样的)的内容,执行一系列的命令,包括创建mount目录,安装文件系统,设置属性,启动属性服务器,启动Socket服务端口,加载preload-classes和preload-resource(Framework大部分类及资源),fork启动新的进程Zygnote。

这是手机启动的过程。手机在使用中,是通过Zygnote进程孵化出一些进程,这些进程也就是我们所说的APP。

越写越头昏,涉及的太多东西。知识底蕴不够,就不在深究了。这些放一放,先把应用层开发的学好,再回头来看这些问题。

下个星期一,要开始实习了!!!终于可以接触真正的工作了。加油!!!

我对Android的认识相关推荐

  1. Unity5.6+ 导出Android 应用程序apk的环境配置及导出过程

    首先下载并安装安卓SDK和java的JDK 安卓sdk下载: http://www.android-studio.org/ 也可以在这下载: 链接:http://pan.baidu.com/s/1bp ...

  2. Android 的NDK的Makefile编写

    Android.mk 是google根据Linux GNU Makefile精简编译脚本.具体来说:这就是GNU Makefile的一小部分. 举一个简单例子: LOCAL_PATH := $(cal ...

  3. Android Animation (安卓动画)概念简介

    Android Animation Android 四种动画分别为逐帧动画和补间动画.属性动画.过渡动画: Frame Animation (逐帧动画) 实现方式:xml 和 Java代码 图片跳转的 ...

  4. 基于Android和SpringBoot的购物App

    (Shopping)购物应用商城 本软件使用Android和SpringBoot.JavaWeb技术实现:并结合百度LBS平台的SDK.支付宝App支付客户端SDK.MobTech的ShareSDK: ...

  5. Android数据持久化:SharePreference

    SharePreference:作为Android数据持久化的一种,具有一定的便捷性,适合存储一些体积小的数据. 存储数据方式:键值对的方式,类似于Map: 利用SharePreference.Edi ...

  6. Android数据持久化:文件存储

    数据持久化: 数据可分为瞬时数据和关键数据.保存在内存之中的数据是瞬时数据,而对于一些关键性数据,后期需要持续使用的,应当保存在存储设备中: 持久化保存方式: 文件存储.SharePreference ...

  7. Android Studio中RecycerView依赖库加载问题

    依赖包导入思考: 参考资料:recycleview导包问题 打开修改本项目中的build.gradle; 切勿着急添加包,应当提前查看其中的版本号(因为加载的v7包要和其版本保持一致性): 例如: 因 ...

  8. Android布局优化之include、merge、ViewStub

    include:引入重复使用的相同布局 merge:减少include布局的层级,将子元素直接添加到merge标签的parent中 ViewStub:其实就是一个宽高都为0的一个View,它默认是不可 ...

  9. Android动画之帧动画和补间动画

    Android系统提供三种动画:帧动画.补间动画和属性动画.这里先分析总结帧动画和补间动画. FrameAnimation 帧动画,通俗来说就是按照图片动作顺序依次播放来形成动画,创建帧动画可以用 x ...

  10. Android系统的启动过程

    Android系统的启动过程可以简单地总结为以下几个流程: 加载BootLoader -> 初始化内核 -> 启动init进程 -> init进程fork出Zygote(孵化器)进程 ...

最新文章

  1. idea网页预览功能_IDEA 2020.2 重磅发布,动画级新功能预览!
  2. 小坑记录:get_cmap参数区分大小写
  3. 【Kaggle-MNIST之路】CNN结构改进+改进过的损失函数(五)
  4. c# 数组中的空值_译 | 你到底有多精通 C# ?
  5. C51单片机其他名词英文全称
  6. matlab离散点用折线连接起来
  7. 飞书上点链接怎么指定跳转浏览器_东半球最接地气的短链接系统设计
  8. 前端好学还是Java好学?
  9. Atitit.判断元素是否显示隐藏在父元素 overflow
  10. 实验任务四:实现登陆界面
  11. 打印一只Nyan Cat(彩虹猫)(C++)
  12. 西门子SITOP电源维修6EP1336-3BA00冗余电源模块维修概述
  13. c51单片机流水灯程序汇编语言,基于51单片机的流水灯程序
  14. i3 9350KF和i5 9400F的区别
  15. C语言高级教程-C语言数组(六):变长数组
  16. SQLServer中使用between查询日期
  17. 五福题材的公众号图文排版有哪些素材?
  18. puppy linux安装中文包,Puppy Linux 4.00 的中文支持包
  19. 微信小程序之音乐播放
  20. Python依赖管理和打包工具poetry

热门文章

  1. 路由器交换机:机试练习
  2. FM1906段码屏驱动
  3. 医疗智能BI助你建立智慧医院
  4. 573声卡调试是什么
  5. 通关GO语言11 并发模式:Go 语言中即学即用的高效并发模式
  6. 自动驾驶 l5 ai_强AI和弱AI的真实故事以及适用于自动驾驶汽车的信息
  7. 解决浏览器自动填充账号密码行为
  8. 从穿孔纸带到当代智能手机软件的设计编程,述说码农前行路
  9. 48074-75-5,m-PEG5-2-methylacrylateMichael加成反应中,丙烯酸甲酯基团与胺反应
  10. USB学习笔记(4)STM32关于USB库的解读