浅析 android 应用界面的展现流程(二)布局与视图的创建
在《浅析 android 应用界面的展现流程(一)》我们已经对周期函数有了一个系统的理解,本文将继续回归主线 - 界面展现,我们将会从 Activity 的启动(attach)开始,力争对 Activity 界面布局和视图结构有一个整体的把握。
在《浅析 android 应用界面的展现流程(一)》我们已经对周期函数有了一个系统的理解,本文将继续回归主线 - 界面展现,我们将会从 Activity 的启动(attach)开始,力争对 Activity 界面布局和视图结构有一个整体的把握。
“做了那么久的 Android APP 开发(从上学期间到目前为止间断的做了也有1年多了,还有一年多在玩 SSH、VC),也见过了那么多形形色色的界面设计,也做过不少 UI 上的需求,但仍然对 Android 界面的展现流程没有一个系统的认知,说来也是愧对自己导师和leader了。” 想来想去,这就算是这一年多安卓开发的忏悔之一了。
本系列文章将从 Activity 的使用出发,逐级分析一个 Android app 从启动到绘制布局再到展现给用户界面的总体逻辑,贯穿 目标进程、ActivityManagerService、WindowManagerService、Surfaceflinger,本系列文章将针对 Android 4.4 的源码进行讨论。
要问storm是什么?简单答复就是:storm对于实时计算的相当于hadoop对于批处理。两者代表的对大数据处理的两种不同方式与态度,即hadoop代表的批处理方式,与storm为代表的流式计算。
先不扯流式计算是个什么鬼。如果说到大数据分析,大家首先直观就会想到hadoop的批处理方式。不管hadoop的图标上面的大象画得有多萌,出现在大家脑中的画面里的,肯定都会有一个庞然大物,好似几个大力巨神在移山搬海。即然是大数据,你自然需要一个能容纳海量数据的存储,为了兼顾效率与可靠,hdfs、hbase这样的工具应运而生。MapReduce的计算框架在帮你降低编程难度的同时,通过以计算能力去求找数据的方式,减少了数据传输的量,但是仍会有大规模的数据需要集中传输,占用大量带宽。由于批处理是对数据的大量数据的集中处理,强大的计算能力必不可缺,甚至有些场景,巨大的内存使用量也是让你望还却步的。可见批处理的处理思想虽然也有很多分布式的概念在,但总体感觉还是在是以大制大。你量大,我就力气要大。这就导致大存储,大带宽,大计算能力,大内存的需求。所以对很多人来说,这位移山大神不是你请得起的。
SystemServer - Android Framework 服务的核心进程,它管理一切与 Android 相关的服务,包括窗口、安装的应用、当前运行的应用、通知、网络、时间、电量、同步帐号、音频、视频、蓝牙、WIFI、地理位置 等一系列常用以及不常用的功能。盗用如下一张图,就可以看出从开机到SystemServer 的创建过程,以及桌面点击与AMS的交互:
<center>
图 0.1 Android 系统启动</center>
本文从 Android 4.4 源码出发,SystemServer 进程的创建开始,把 context manager 进程和 SystemServer 的初始化流程过一遍,相信会对看其他模块的源码有很大的帮助。