首页
ppt
开发工具
×
该PPT是用户上传,如果对该PPT内容或使用有所疑问,请根据该ppt中作者所留的联系方式,咨询原作者!
如果涉及侵权等原因需要删除,请联系QQ:875388611
Android 系统架构概述
760
0
0
nw37
颜色:
下载需要
8
金币
[ 金币充值 ]
亲,您也可以通过
分享原创文档
来获得金币奖励!
服务器/托管费、人工审核、技术维护等都需要很多费用,感谢您支持深度开源的发展!
下载PPT
0
推荐
4
收藏
PPT 内容
PPT 图集
1. Android系统架构概述罗升阳 http://weibo.com/shengyangluo http://blog.csdn.net/luoshengyang
2. About Me《老罗的Android之旅》博客作者 《Android系统源代码情景分析》书籍作者 博客:http://blog.csdn.net/Luoshengyang 微博:http://weibo.com/shengyangluo
3. AgendaAndroid系统整体架构 Android专用驱动 Android硬件抽象层 Android应用程序组件 Android应用程序框架 Android用户界面架构 Dalvik虚拟机
4. Android系统整体架构Android OS = Android Runtime + Linux Kernel
5. Android专用驱动Logger 完全内存操作 适合频繁读写
6. Android专用驱动(续)Binder Client/Server模型 进程间一次数据拷贝 进程内直接调用
7. Android专用驱动(续)Ashmem 使用文件描述符描述 通过Binder在进程间传递
8. Android硬件抽象层HAL设备驱动分为内核空间和用户空间两部分 保护厂商利益(出发点) 内核空间主要负责硬件访问逻辑(GPL) 用户空间主要负责参数和访问流程控制(Apache License) 用户空间部分设备驱动即为HAL Module HAL Module通过设备文件访问内核空间部分设备驱动 系统服务通过HAL Module对硬件进行管理 系统服务通过JNI访问HAL Module 应用程序通过系统服务对硬件进行访问 应用程序通过Binder IPC访问系统服务
9. Android硬件抽象层HAL(续)
10. Android应用程序组件Android应用程序的一般架构Every thing is component
11. Android应用程序组件(续)四大组件(砖头) Activity -- UI、交互 Service -- 后台计算 Broadcast Receiver -- 广播 Content Provider -- 数据ActivityServiceBroadcast ReceiverContent Provider
12. Android应用程序组件(续)Activity生命周期 由ActivityManagerService管理
13. Android应用程序组件(续)Activity堆栈 由ActivityManagerService维护
14. Android应用程序组件(续)Activity在堆栈中以Task的形式聚集在一起 Task由一系列相关的Activity组成,描述用户完成某一个操作所需要的Activity 当我们从Launcher上点击一个应用图标的时候,就启动一个Task Task是用Android多任务的一种体现 http://developer.android.com/guide/components/tasks-and-back-stack.html
15. Android应用程序组件(续)Service Unbounded service Bounded service
16. Android应用程序组件(续)Broadcast Receiver 注册 静态 -- AndroidManifest.xml 动态 -- Context.registerReceiver 广播 无序 -- Context.sendBroadcast 有序 -- Context.sendOrderedBroadcast
17. Android应用程序组件(续)注册广播
18. Android应用程序组件(续)发送广播Broadcast ReceiverActivityManagerServiceActivity Service ……Broadcast ReceiverBroadcast ReceiverIntentIntentIntentIntent
19. Android应用程序组件(续)Content Provider 通过URI来描述 数据访问接口 数据更新机制
20. Android应用程序组件(续)Content Provider的URI结构 A -- Scheme B -- Authority C -- Resource Path D -- Resource ID
21. Android应用程序组件(续)Content Provider数据访问接口 Insert Update Delete Query Call -- Hidden
22. Android应用程序组件(续)Content Provider数据更新机制 注册内容观察者 -- ContentResolver.ContentObserver 发送数据更新通知 -- ContentResolver.notifyChange
23. Android应用程序组件(续)注册Content Provider的内容观察者
24. Android应用程序组件(续)发送Content Provider数据更新通知
25. Android应用程序框架管理硬件 提供服务 组件管理 进程管理
26. Android应用程序框架(续)按服务类型划分 Hardware Service CameraService LocationManagerService LightsService …… Software Service PackageManagerService ActivityManagerService WindowManagerService ……
27. Android应用程序框架(续)按开发语言划分 Java Runtime Framework PackageManagerService ActivityManagerService WindowManagerService …… Native Runtime Framework MediaPlayerService SurfaceFlinger AudioFlinger ……
28. Android应用程序框架(续)按进程划分 System Server Process PackageManagerService ActivityManagerService WindowManagerService ...... Independent Process SurfaceFlinger MediaPlayerService ……
29. Android应用程序框架(续)服务注册、获取和访问过程
30. Android用户界面架构窗口管理框架 Window WindowManagerService SurfaceFlinger 资源管理框架 AssetManager Resources
31. Android用户界面架构(续)窗口管理框架
32. Android用户界面架构(续)资源管理框架
33. Dalvik虚拟机Java虚拟机与Dalvik虚拟机区别Java Virtual MachineDalvik Virtual MachineInstruction SetJava Bytecode (Stack Based)Dalvik Bytecode (Register Based)File Format.class file (one file, one class).dex file (one file, many classes)
34. Dalvik虚拟机(续)Dex文件编译和优化
35. Dalvik虚拟机(续)内存管理 Java Object Heap 大小受限,16M/24M/32M/48M Bitmap Memory(External Memroy): 大小计入Java Object Heap Native Heap 大小不受限
36. Dalvik虚拟机(续)垃圾收集(GC) Mark,使用RootSet标记对象引用 Sweep,回收没有被引用的对象 GingerBread之前 Stop-the-word,也就是垃圾收集线程在执行的时候,其它的线程都停止 Full heap collection,也就是一次收集完全部的垃圾 一次垃圾收集造成的程序中止时间通常都大于100ms GingerBread之后 Cocurrent,也就是大多数情况下,垃圾收集线程与其它线程是并发执行的 Partial collection,也就是一次可能只收集一部分垃圾 一次垃圾收集造成的程序中止时间通常都小于5ms
37. Dalvik虚拟机(续)即时编译(JIT) 从2.2开始支持JIT,并且是可选的,编译时通过WITH_JIT宏进行控制 基于执行路径(Executing Path)对热门的代码片断进行优化(Trace JIT),传统的Java虚拟机以Method为单位进行优化(Method JIT) 可以利用运行时信息进行激进优化,获得比静态编译语言更高的性能 实现原理:http://blog.reverberate.org/2012/12/hello-jit-world-joy-of-simple-jits.html
38. Dalvik虚拟机(续)Java本地调用(JNI) 实现Java与C/C++代码互调 大部分Java接口的都是通过JNI调用C/C++接口实现的 提供有NDK进行JNI开发 进程和线程管理 与Linux进程和线程一一对应 通过fork系统调用创建进程 通过pthread库接口创建线程
39. Q&A
40. Thank You
关键词
Android开发
移动开发
Apache
Java
C/C++
相关PPT
Android 系统架构概述
Android 开发概述
第1章 Android 概述
第1章 Android 概述--1
系统概要设计中架构设计
Android RIL 概述
第1章 嵌入式系统概述
JPA 概述
任务分发系统概述
系统架构设计方法论_v1.0