zoukankan      html  css  js  c++  java
  • 【原创】菜鸟版Android 笔记1- Android架构和Application

    Android架构

     

    图1

    Android架构自上而下名称为应用层、应用框架层、运行库和Adroid虚拟机层、 Linux内核层。

    1. 应用层

    应用层像一座大厦里面的砖瓦。我们所做的开发基本上都在应用层,在手机上应用层的软件有桌面、短信、电话、浏览器、微信、扣扣等等这类软件。应用层的软件是在应用框架层的规定和支持下开发。两个意思 :a. 应用层会调用框架层提供的API进行开发,b.框架层会对应用层的软件进行规范和管理,应用层的软件是面向框架层开发的。 该层采用java开发。

    2. 应用框架层

    应用框架层像一座大厦的钢筋结构。应用框架层提供了Android开发模式和所有安卓开发所需要的各个组件、API,并提供了管理功能。其中很多的组件API通过JNI调用了下一层的功能来实现。该层使用Java代码实现。框架层也允许应用在安全的情况下向其他程序发布service、Activity和数据。

    • Activity Manager:  管理应用程序生命周期,提供通用的导航回退功能
    • Window Manager:  主要用来管理窗口的一些状态、属性、view增加、删除、更新、窗口顺序、消息收集和处理等。
    • Content Providers: 提供不同进程数据访问和共享功能。
    • Resource Manager: 提供访问非代码资源,如本地化字符串、图形和布局文件
    • Notification Manager:使所有的应用程序能够在状态栏显示自定义提示信息

    3. 函数库和Android运行时层

    Android运行时是一座大厦的地基,函数库像根。函数库全部采用C/C++语言实现,为框架层提供功能API。框架层可以采用JNI的方式调用。函数库需要调用Linux内核。

    其重要的函数库有:

    •  Libc:专门为嵌入式设备调整的标准C系统库。
    •  SGL/openGL|ES:图形引擎
    •  WebKit:浏览器引擎
    •   SQLite:轻量级关系数据库
    •   Media Framework:多媒体播放、录制框架。
    •   SurfaceManager:管理对显示子系统的访问。
    •   Freetype:位图和向量字体显示。

    Android运行时包含一个核心库和虚拟机程序,虚拟机程序是解释执行android java字节码的程序。虚拟机程序有两种,Dalvik和ART,Dalvik虚拟机提供了JIT技术(Just-in-time Compiler)在运行时编译经常运行的字节码来提升应用的运行速度。在4.4以后提供了ART模式虚拟机,ART技术就是在安装应用的时候会进行一次预编译,将字节码转换为机器语言存储在本地,这样在运行程序时就不会每次都进行一次编译了,执行效率也大大提升,不过这也导致应用安装时间变长。而每次启动安卓系统的时候,系统都会进行所有应用的安装,所以启动速度变慢。每一个安卓应用程序都运行在一个虚拟机进程中。它把所有的进程和内存管理都交给了运行时,在有必要的时候,运行时会结束或者暂停进程,从而更有效的管理资源。

    Android运行时和函数库在linux内核之上,由内核来处理与底层硬件的交互。同时有一套API提供对所有底层服务、硬件和功能的访问。

    4. Linux内核层

    Linux内核层像地球。该层就是一个linux内核+驱动。负责了内存管理、进程管理、协议栈和驱动模型等核心系统服务。

    Android Application

    1. 应用程序优先级等于其优先级最高的组件的优先级。

    2. 应用程序不等于进程。一个安卓应用,可以拥有多个进程.remote,process。

    优先级

    活动进程

    拥有与用户交互的组件

    以下几种情况属于活动进程

    A. 处于onCreate、onStart、onDestroy的service

    B. 正在运行、标记为前台运行的service

    C. 处于onReceive的BroadcastReceiver

    D. 活跃状态的Activity

    可见进程

    用户可以看到,但是不能交互,就像Activity上有个弹窗。

    服务进程

    开启了service的进程

    后台进程

     不可见、没有service的activity的进程。

    空进程

    只是为了缓存。

    3. 如果应用程序A依赖于应用程序B的service或者provider,那么优先级肯定B>A

    4. 能对应用程序级的广播作出响应(低内存)。

    5. 因为是应用程序级的单例模式对象,各种组件都能够取得这个对象,所以可以用来传递数据、维护和管理数据,做一切想做的。

    Application类事件回调

    事件处理函数

    onCreate

    创建时触发

    onLowMemory

    低内存事件触发,无参数

    onTrimMemory(int)

    Android 4.0之后提供的API,系统会根据不同的内存状态来回调。会带有int参数,表示现在的状态

    onConfigurationChanged(Configuration )

    配置改变处理

    6. 在运行时配置(例如语言、插入SIM卡、时区变换、旋转屏幕等)改变时,不会像Activity那样重启。

    转载请注明出处:http://www.cnblogs.com/stonehat/
     
     
  • 相关阅读:
    overflow妙用--去除默认滚动条,内容仍可滚动
    call()与构造函数的运用
    this与super
    构造方法
    多态
    抽象类与接口
    面向对象的基本特征
    类与对象
    面向过程与面向对象
    java自动拆装箱
  • 原文地址:https://www.cnblogs.com/stonehat/p/5947256.html
Copyright © 2011-2022 走看看