Android Application Framework Outside, Service Understanding : 3

Android

大千世界,具体到社会运作,抽象至软件运行,不以规矩,不成方圆 ,所有的一切都要接受约束和管理,在一系列规则下生存。那么Android中众多的service又是如何被管理的?

Manage Android Service

Service要在Android系统中发挥作用,首先要解决一个问题:Android是如何使其成为系统服务的。

以AlarmManagerService为例,观察构造函数的调用位置,那么可以发现其出现在com.android.server.ServerThread,与此相似,很多Service的构造函数都出现在com.android.server.ServerThread。但是,令人奇怪的是,无论如何也找不到ServerThread.java这么一个文件,实际上它躲藏在SystemServer.java中。

注意:多个class声明在同一个文件里是一种不值得推荐的做法,尽管Android中这种做法并不少见。

[ Read More » ]

Android Application Framework Outside, Service Understanding : 2

Android

Service一词在Android中出现的概率非常大,以致不同上下文(Context)在着较大差异。如果详细划分,则可以分为四类:Application Service、Android Service、Native Service、System (Linux) Service。

尽管存在着差异,但是透过Reference中对Application Service的描述,仍旧可以概括出所有Service的本质:

A Service is an (application) component representing either an application’s desire to perform a longer-running operation while not interacting with the user or to supply functionality for other applications to use.

[ Read More » ]

Android Application Framework Outside, Service Understanding : 1

Android

从2007年11月5日Google首次发布Android以来,这个绿色机器人 Open Source、体系架构卓越、应用开发便捷等亮点日益引起业界的浓厚兴趣,到目前为止陆续发布了1.1、1.5、1.6、2.0、2.1和2.2等版本,日趋完善的进取势头带动了移动互联网一股新的热潮。

文档名 Android Framework Outside,原本是打算用Inside,但是由于Framework内容繁复,如果用Inside,未免显得自负,况且我也无法做到了如指掌、洞若观火,因此取名Outside,表示这只是一知半解。

由于无法在短时间内面面俱到,目前优先选择其中的Service部分进行学习,整理成Service Understanding。但尽管Service只是Framework中一个组成部分,仍旧体积庞大,对其内容继续筛选后,选择WindowManagerService和ActivityManagerService进行重点研究。

[ Read More » ]

读《Professional Assembly Language》之移位之谜

Professional Assembly Language

《Professional Assembly Language》在第八章第二节讲解了Shift Instruction,在谈到算数左移(SAL)和逻辑左移(SHL)时,作者列举了该指令的三种格式:

  1. sal destination
  2. sal %cl, destination
  3. sal shifter, destination

其中,第三种格式表述存不清楚,shifter可以是immediate value?是common register?是memory location?下面先用shifter是memory location类型来做个试验。

1
2
3
4
5
6
7
8
9
10
11
12
13
.section .data
val:
        .int 0x1
count:
        .int 0x21
.section .text
.global _start
_start:
        nop
        sall count, val
        movl $1, %eax
        movl $0, %ebx
        int $0x80
[ Read More » ]

OS X Lion 接入802.1x

Apple

把OS X从Snow Leopard升级Lion,我遇到了两个问题,第一,摄像头找不到;第二,802.1x无线网络无法接入。第一个问题在Apple官方论坛里有用户在讨论(见《Camera not working with Lion》),通过重设SMC(见《Intel-based Macs: Resetting the System Management Controller (SMC)》)得以解决。

第二个问题,不少用户认为Apple在Snow Leopard能做到的事情,到了Lion反而不能做,认为这是一种倒退。从我的使用经验来看,不能直接接入802.1x实在很有损用户体验。同样在官方论坛,有用户抱怨《802.1x add profile ?》,并且这种抱怨的声音在各个非官方Mac论坛里都能看到。

[ Read More » ]