(一)Android?

Andoid是一个在linux上的,多用于移动终端的操作系统,不是类似redhat的服务器OS,也不是类似Windows的标准桌面OS,只是一种手持设备的较为简单的图形OS,Android应用程序使用Java开发。Android从linux kernel开出的分支,比如我的华为手机android是4.3,使用的linux kernel是3.4。

android代码已经被linux kernel社区剔除。android由于继承了linux kernel代码,根据linux GPL规定即对开源代码的任何修改,都必须开源,所以android开源了。同时android属于ASL许可证,ASL许可证规定可以随意使用代码不用开源,所以android上的应用程序和驱动程序都似乎闭源的,这也满足了很多硬件厂商的要求。

与Liinux嵌入式开发使用系统调用和glibc接口不同的是,Android没有glibc的支持,自己使用BionicLibc库。并且,按照移动终端OS的需求提炼出了自己的一套接口,开发人员在Android接口上开发,Android接口就是我们下面提到的一系列java基础类库。

额外的一个问题:为什么android使用了linux内核:

答:回答这个问题需要先了解内核的作用,内核提供了进程管理/文件网络管理/系统安全权限管理等。内核对上层操作者是不可见的,只能针对提供出来的操作接口进行操作。所以内核对整个系统来说是基础性的,不是功能性的。

借用知乎上的话,开发一个内核不难,难在成千上万的设备为他做驱动。Apple和Windows有独立的自有硬件或者有能力说服硬件厂商为之作驱动,但是android开发之初,只能选择Linux。

(二)Android的应用组件

Android应用程序没有为应用准备一个单独的程序入口(比如说,没有main方法),而是为系统依照需求实例化提供了基本的组件。共有四种类型的组件:

Activity:一个应用程序可以有一个或多个activity,每个用户界面都是以activity为基类的子类。Activity生命周期包含active/pause/stop,android会对组件的生命周期作管理,会在系统需要内存时候自动销毁stop的Activity组件。

Service:后台服务可以在后台做一些文件处理网络处理等,将结果提供给需要的activity使用,每个服务都继承Service类。服务运行于应用进程的主线程内,耗时服务会使用新县城执行。

BroadcastRecvice:广播消息接收类,用于接收广播消息并作出处理的组件,很多广播消息源于系统代码比如时区的改变,电池电量低,拍摄了照片或者改变了语言选项。

Intent:消息组件,用于各个组件之间的消息传递。

Android的线程是以标准的Java Thread对象创建的。

Android有一个轻量级的远端过程调用(RPC)机制,既在本地调用一个方法,在远程处理然后将结果返回。

(三)Android对Linux kernel的增强

android对kernel的增强主要体现在对Linux kernel驱动的增强。Android将设备驱动提到Userspace中,不继承在内核中。

1)OpenBinder框架的驱动,用于提供Android平台的进程间通信IPC功能,代码在drivers/staging/android/binder.c

2)Android电源管理,一个基于标准Linux电源管理系统的轻量级Android电源管理系统。

3)低内存管理器:比OOM机制更加灵活,可以根据需要杀死进程以释放需要的内存。drivers/staging/android/lowmemkiller.c

4)匿名共享内存(Ashmem)为进程提供大块的共享内存,同时也提供管理和回收这个内存的机制。

5)Physical MEM:向用户提供连续的物理内存空间。

6)Android Logger:轻量级的日志设备

7)Android Alarm:定时器的android定制/

8)Yaffs2文件系统。

更多相关文章

  1. 使用GCM服务(Google Cloud Messaging)实现Android消息推送
  2. 如何在Android(安卓)Studio使用Java8 Lambda表达式
  3. 使用Android(安卓)studio开发Android(安卓)App
  4. Android(安卓)使用Parcelable序列化对象
  5. android中ListActivity使用记录Your content must have a ListVi
  6. android下使用google test入门
  7. 箭头函数的基础使用
  8. NPM 和webpack 的基础使用
  9. Python list sort方法的具体使用

随机推荐

  1. Android中发送短信和彩信
  2. Android开发教程网址
  3. FlexboxLayout使用指南
  4. 相机 android java.lang.RuntimeExceptio
  5. 实验三、AndroidUI组件
  6. android对大图片的缓存处理
  7. android亮屏、暗屏、解锁、关闭系统对话
  8. Android爬坑-悬浮窗显示位置问题
  9. SharedPreferences 源码分析
  10. android的文件操作