—— 本文参照 Learn Java for Android Development (第三版)
Android Runtime
android的运行时环境是由系统库和虚拟机组成的,有关虚拟机和系统库的故事就不讲了。
每一个android app都是运行在一个系统进程里面的,每个系统进程都是一个虚拟机实例。这个虚拟机在最开始设计的时候就有考虑到多虚拟设备的情况,所以不需要担心效率问题。虚拟机的高效很大程度是基于虚拟机可以执行DEX文件。DEX文件是一种被优化成内存占用最小的格式。
注意:不管app的什么部分启动的时候android都会启动一个进程,这个进程不再使用的时候才会被杀掉,或者其他进程需要占用系统资源的时候也会被杀掉。
也许大家会质疑,如果没有java虚拟机环境的话怎么去运行java代码?好吧,其实我们的虚拟机是不能运行java代码的。事实是android会用dx工具把编译好的java类文件转换为dex文件,这样虚拟机才会去执行。
Linux Kernel
在framework下面的就是Linux kernel了,上面说的系统库和运行时环境都市依赖于linux内核的系统核心服务,比如:线程、低内存管理、网络协议栈、进程管理、以及驱动。其实它最主要的作用就是软件和硬件层之间的一个抽象。
好吧,以上对android系统的简介就差不多了,如果想要了解更多与oncreate()等生命周期相关的东西就需要去查看附件的内容了。但是不管怎样我们首先还是要先学java。
** 注意:**你是不是发现我们之前介绍的那些小程序有的定义了main函数,但是有的没有呢?是的,我们申明过main函数的那些都是java应用程序,没申明的是android应用程序,这两个应用程序的结构是完全不一样的,这里大家需要搞清楚。