浅析 android 应用界面的展现流程(一)周期函数

“做了那么久的 Android APP 开发(从上学期间到目前为止间断的做了也有1年多了,还有一年多在玩 SSH、VC),也见过了那么多形形色色的界面设计,也做过不少 UI 上的需求,但仍然对 Android 界面的展现流程没有一个系统的认知,说来也是愧对自己导师和leader了。” 想来想去,这就算是这一年多安卓开发的忏悔之一了。

本系列文章将从 Activity 的使用出发,逐级分析一个 Android app 从启动到绘制布局再到展现给用户界面的总体逻辑,贯穿 目标进程、ActivityManagerService、WindowManagerService、Surfaceflinger,本系列文章将针对 Android 4.4 的源码进行讨论。

更多>>

数据处理神器storm的理解与思考 ——让你的数据化作行云流水

大数据之殇

要问storm是什么?简单答复就是:storm对于实时计算的相当于hadoop对于批处理。两者代表的对大数据处理的两种不同方式与态度,即hadoop代表的批处理方式,与storm为代表的流式计算。
先不扯流式计算是个什么鬼。如果说到大数据分析,大家首先直观就会想到hadoop的批处理方式。不管hadoop的图标上面的大象画得有多萌,出现在大家脑中的画面里的,肯定都会有一个庞然大物,好似几个大力巨神在移山搬海。即然是大数据,你自然需要一个能容纳海量数据的存储,为了兼顾效率与可靠,hdfs、hbase这样的工具应运而生。MapReduce的计算框架在帮你降低编程难度的同时,通过以计算能力去求找数据的方式,减少了数据传输的量,但是仍会有大规模的数据需要集中传输,占用大量带宽。由于批处理是对数据的大量数据的集中处理,强大的计算能力必不可缺,甚至有些场景,巨大的内存使用量也是让你望还却步的。可见批处理的处理思想虽然也有很多分布式的概念在,但总体感觉还是在是以大制大。你量大,我就力气要大。这就导致大存储,大带宽,大计算能力,大内存的需求。所以对很多人来说,这位移山大神不是你请得起的。


更多>>

浅谈 SystemServer

SystemServer - Android Framework 服务的核心进程,它管理一切与 Android 相关的服务,包括窗口、安装的应用、当前运行的应用、通知、网络、时间、电量、同步帐号、音频、视频、蓝牙、WIFI、地理位置 等一系列常用以及不常用的功能。盗用如下一张图,就可以看出从开机到SystemServer 的创建过程,以及桌面点击与AMS的交互:
<center>

android.init.png

图 0.1 Android 系统启动</center>

本文从 Android 4.4 源码出发,SystemServer 进程的创建开始,把 context manager 进程和 SystemServer 的初始化流程过一遍,相信会对看其他模块的源码有很大的帮助。


更多>>

浅析 Android 消息机制

Android 消息机制贯穿了 Android 应用程序运行,各个线程的消息队列就相当于一条条的大运河,每条运河旁边都有着一条条小路(无Looper的线程),消息相当于从小路上放下的船,在各个运河汇聚、处理,这个比喻可能有些不当,但也足以说明消息机制的重要性。很多优秀的博客都对消息机制做出了很详细的讲解,比如罗升阳老师的博客,本文将从初级使用开始讲解,通过解答正常学习中会遇到的疑问逐渐深入到framework中去。

更多>>