Android架构分析

一、安卓架构图直观

Android系统架构由五部分组成,Linux KernelAndroid RuntimeLibrariesApplication FrameworkApplications。以下这张图展示了Android系统的主要组成部分:

Android几种FrameWork(Manager)的用法_第1张图片


1、Linux Kernel

Android基于Linux2.6提供核心的系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。

如果你只是做应用开发,就不需要深入了解Linux Kernel层。

 

2、Android Rundtime

Android包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个Android应用程序时Dalvik虚拟机中的实例,运行在它们自己的进程中。Dalvik虚拟机设计成,在一个设备可以高效运行地多个虚拟机。Dalvik虚拟机可执行文件格式是.dex.dex格式是专门为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。

大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。两种架构各有优势,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。dx是一套工具,可以将Java .class转换为.dex格式。一个dex文件通常会有多个.class,由于dex有时必须进行最佳化,会使文件大小增加1-4倍,以ODEX结尾。

Dalvik虚拟机依赖于Linux提供基本功能,如线程和底层内存管理。

 

3、Application Framework

通过提供开放的开发平台,Android使开发者能够编制很丰富的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等。

 

(1)Activity Manager — 活动管理器

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

(2)Window Manager

(3)内容提供者—Content Providers

使所有应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据。

(4)View System — 视图

丰富的、可扩展的视图集合,可用于构建一个应用程序,包括列表、网格、文本框、按钮。甚至是内嵌的网页浏览器。

(5)Package Manager

(6)Telephony Manager

主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法。其中包括手机的SIM卡的状态和信息,电信网络的状态以及手机用户的信息。

获取:

TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

 

(7)Resource Manager — 资源管理器

提供访问非代码资源,如本地化字符串、图形和布局文件。

(8)Notification Manager — 通知管理器

使所有的应用程序能够在状态栏显示自定义警告。

(9)Location Manager

 

4、Applications

Android装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置。所有应用程序都是用Java编程语言写的。

 

 

二、详解Application Framework

 

1、Window Manager   [ import android.view.WindowManager ]

WindowManagerAndroid中一个重要的Service,是全局且唯一的。WindowManager是继承ViewManager的。

 

WindowManager主要用来管理窗口的一些状态、属性、view增加、删除、更新、窗口顺序、消息收集和处理等。Android中真正展示给用户的是windowviewactivity所起的作用主要是处理一些逻辑问题,比如生命周期管理以及建立窗口。

 

WindowManager中还有一个重要的静态类LayoutParams。通过它可以设置和获得当前窗口的一些属性。

 

 

两个常见应用:

(1)实现悬浮窗口

 Android几种FrameWork(Manager)的用法_第2张图片

(2)获取Display中屏幕高宽

 

(3)改变Dialog背景透明

 Android几种FrameWork(Manager)的用法_第3张图片

 

2PackageManager

作用:获取Android系统中应用程序的信息,主要包括packageName, label, icon, 占用大小等。具体包括:

1)安装、卸载应用查询permission相关信息;

2)查询Application相关信息(application, activity, receiver, service, provider及相关属性等)

3)查询已安装应用;

4)增加、删除permission;

5)清除用户数据、缓存、代码段等。

 

几个常见应用:

 

(1)获取已安装的应用程序的信息

 Android几种FrameWork(Manager)的用法_第4张图片

(2)获取系统中所有满足ACTION_MAINCATEGORY_LAUNCHER的应用程序的包名、程序入口Activity

Android几种FrameWork(Manager)的用法_第5张图片

 

3、Notification Manager 

NotificationManager:该类负责状态栏通知的管理,负责发通知、清楚通知等。

Notification:是具体的状态栏通知对象,可以设置icon、文字、提示声音、震动等参数。

通知需要的基本参数:

1)通知的图标

2)通知的标题和内容

3)点击通知执行页面跳转 ( PendingIntent )

可选参数:

状态栏顶部提示消息、提示音、振动、灯光等

(1)使用系统定义的通知

 Android几种FrameWork(Manager)的用法_第6张图片


(2)使用自定义的通知

 Android几种FrameWork(Manager)的用法_第7张图片

 

 

 

 

更多相关文章

  1. 穿针引线,帮你回忆, 汇总:Android系统启动流程 & 应用程序'进程'启
  2. android应用程序最小化的处理方法
  3. Android应用程序未捕获异常并提示用户发送给开发者
  4. android 应用程序全屏(没有状态栏和标题栏)
  5. Android Notification通知栏、点击事件、悬浮通知的简单实现
  6. 安装和卸载Android应用程序(apk包)
  7. Android Virtual Device Manager 创建虚拟机出现SDK Manager NUL
  8. Dalvik虚拟机是如何执行程序的

随机推荐

  1. 关于php使用thrift做服务端开发的那些事
  2. 个人对命名空间的一点理解
  3. PHP数组常用函数总结
  4. php如何设定启用php缩写(php.ini、short_o
  5. php如何安装bcmath扩展脚本?(附代码)
  6. 记录之PHP日常注意点(1)
  7. 教你用PHP开发微信公众号文章付费阅读功
  8. 了解RabbitMQ+haProxy+keepalived的使用
  9. PHP 管理全局的方法
  10. ES在MySQL、PHP中的使用