UML 学习网址  http://www.yiibai.com/html/uml/2013/080999.html



http://blog.csdn.net/bravekingzhang/article/details/7966108

= Android启动流程  =
Android启动时序图 

== Linux启动  ==
=== 开机过电,复位器件  ===
=== 执行Bootloader程序  ===
arm中是uboot或者fastboot
如果在fastboot的运行过程中没有按下特别的按键,执行第一个应用程序(即Linux Kernel),从NAND Flash中读取 
=== 初始化Linux Kernel  ===
=== 读取init.rc文件  ===
位于设备根目录下 
== Android启动  ==
=== 启动初始化进程init  ===
==== init启动Linux守护进程  ====

==== init启动Zygeote进程  ====

受精卵,所有apk应用进程的父进程 
==== init初始化runtime进程  ====

=== runtime初始化并注册Service Manager  ===

runtime向zygote申请实例化一个Dalvik Vm并启动SystemServer SystemServer启动native serivce(Surface Flinger和Audio Flinger),并将这些native Service注册在ServiceManager中。 


SystemServer启动android管理服务,都会被注册ServiceManager中。 

=== Zygote孵化home和contact进程  ===
至此Android启动完成 

== Zygote启动分析  ==

Zygote的可执行文件在/system/bin/app_process中 
相关配置信息在/init.rc文件中 
=== 启动Socket服务端口  ===
Dalvik VM执行的第一个类ZygoteInit.java,Socket的启动也在此文件中 private static void registerZygoteSocket()静态函数中启动。 String env=System.getenv(ANDROID_SOCKET_ENV)获取系统为Zygote分配的Socket描述字。 用createFileDescriptor()创建一个文件描述符,再构造LocalServerSocket对象。 main()中调用runSelectLoopMode()进入非阻塞独模式 在while(true)中调用ZygoteConnection类的runOnce()处理接收的命令。 
=== 加载preload-classes  ===
作用:预装Framework的大部分类和资源 类列表在/system/framework/framework.jar文件中的preload-classer文本文件中。 ZygoteInit.java的main()函数中通过调用preloadClasses()读取preload—classes的列表来装载这些类 
=== 加载preload-resources  ===
preload-resources在/system/framework/base/res/res/values/arrays.xml文件中定义。 ZygoteInit.java的main()函数中通过调用preloadResources()读取arrays.xml的列表来装载这些资源。 preloadResources()调用preloadDrawable()来加载Drawable类资源,存于mResources类内部的Drawable列表内,调用preloadColor()加载Color类资源,存于mResources的Color列表内。 
=== 启动SystemServer  ===
从ZygoteInit.java的main()调用startSystemServer()开始。 
==== 启动各种系统服务线程  ====
从SystemServer的main()开始执行,先调用init1()进行一些Dalvid VM的相关初始化工作。init1()内部会调用java端的init2()。主要的系统服务在init2()中完成。 init2()创建一个ServerThread线程,从ServerThread的run()开始真正启动系统服务。 AmS启动后: 1.调用main() 2.调用AmS.setSystemProcess() 3.调用Ams.installProviders() 4.调用systemReady() 5.启动第一个activity,即home程序。 
在Ams的startHomeActivityLocked()中发出一个intent,它包含CATEGORY_HOME,任何能相应此intent的程序都能成为第一个activity,成为home程序。 

http://blog.csdn.net/rosekin/article/details/14519277

时序图

时序图用于描述对象之间的传递消息的时间顺序, 即用例中的行为顺序.

当执行一个用例时, 时序图中的每条消息对应了一个类操作或者引起转换的触发事件.

在 UML 中, 时序图表示为一个二维的关系图, 其中, 纵轴是时间轴, 时间延竖线向下延伸. 横轴代表在协作中各个独立的对象. 当对象存在时, 生命线用一条虚线表示, 消息用从一个对象的生命线到另一个对象的生命线的箭头表示. 箭头以时间的顺序在图中上下排列.

ATM 用户成功登陆的时序图

时序图中的基本概念


对象: 时序图中对象使用矩形表示, 并且对象名称下有下划线. 将对象置于时序图的顶部说明在交互开始时对象就已经存在了. 如果对象的位置不在顶部, 表示对象是在交互的过程中被创建的.

生命线: 生命线是一条垂直的虚线. 表示时序图中的对象在一段生命周期内存在. 每个对象底部中心的位置都带有生命线.

消息: 两个对象之间的单路通信. 从发送方指向接收方. 在时序图中很少使用返回消息.

激活: 时序图可以描述对象的激活和钝化. 激活表示该对象被占用以完成某个任务. 钝化指对象处于空闲状态, 等待消息. 在 UML 中, 对象激活时将对象的生命线拓宽为矩形来表示的. 矩形称为计划条或控制期. 对象就是在激活条的顶部被激活的. 对象在完成自己的工作后被钝化.

对象的创建和销毁: 在时序图中, 对象的默认位置是在图的顶部. 这说明对象在交互开始之前就已经存在了. 如果对象是在交互过程中创建的, 那么就应该将对象放到中间部分. 如果要撤销一个对象, 在其生命线终止点处放置 “ X” 符号.

练习:孙中山的……


活动图

在 UML 中, 活动图本质上就是流程图. 它用于描述系统的活动, 判定点和分支等.

活动图中的基本概念


动作状态: 原子的, 不可中断的动作, 并在此动作完成之后向另一个动作转变. 在 UML 中动作状态用圆角矩形 表示, 动作状态所表示的动作写在圆角矩形内部.

分支与合并: 分支在软件系统中很常见. 一般用于表示对象类所具有的条件行为. 用一个布尔型表达式的真假来判定动作的流向. 条件行为用分支和合并表达.在活动图中, 分支用空心小菱形 表示. 分支包括一个入转换和两个带条件的出转换, 出转换的条件应该是互斥的, 须保证只有一条出转换能够被触发. 合并包含两个带条件的入转换和一个出转换.

状态图

状态图: 通过建立对象的生存周期模型来描述对象随时间变化的动态行为.


状态图中的基本概念

状态: 用圆角矩形表示. 状态名称表示状态的名字, 通常用字符串表示. 一个状态的名称在状态图所在的上下文中应该是唯一的.

转换: 用带箭头的直线表示. 一端连着源状态, 一端连着目标状态.

初始状态: 每个状态图都有一个初始状态. 此状态代表状态图的起始位置. 初始状态只能作为转换的源, 不能作为转换的目标, 并且在状态图中只能有一个. 初始状态用一个实心圆表示.

终止状态: 模型元素的最后状态, 是一个状态图的终止点. 终止状态在一个状态图中可以有多个.

协作图

协作图(也叫合作图)是一种交互图.

时序图主要侧重于对象间消息传递在时间上的先后关系, 而协作图表达对象间的交互过程及对象间的关联关系




更多相关文章

  1. Android中shape的使用
  2. Android(安卓)Bundle类
  3. Android(安卓)Selector Shape使用详解
  4. Android(安卓)GridView 通过seletor 设置状态和默认状态
  5. Android(安卓)检测SD卡应用
  6. listView显示对象以及access any RESTFull service that uses JS
  7. 获取Android设备电池信息
  8. Android中文API(131) —— GpsStatus
  9. Android(安卓)Handler 机制

随机推荐

  1. Android中一直走马灯效果的TextView
  2. APP启动时白屏或出现标题
  3. [Android] 如何取得版本号码
  4. android GridView 只显示一行,可以左右滑
  5. Android获得屏幕的宽和高
  6. android TelephonyManager
  7. android 收集
  8. 【Android】编译CM10遇到的错误解决方案
  9. 百度地图开发-申请ak及相关配置
  10. 《Android(安卓)安全(一)》AndroidManifest