Android Application Framework Outside, Service Understanding : 4

Android

在上文当中提到的service命令,它是如何获得服务的信息呢?这个这个仅为275行的简单程序(framework/base/cmds/service/service.cpp)并未有什么特别神奇的地方,从本质上它对服务信息一无所知,所有的信息都是通过IPC获得。

IPC(Inter Process Communication)几乎总是伴随着Service出现,–不论是系统服务,还是应用服务,因为服务运行的进程大部分和应用运行的进程不同。

Android有意淡化IPC,甚至使其透明,就连Android Dev Guide也只是对IPC只做简明的解释说明,Android这样做的目的是降低应用开发的技术门槛,使开发者更多关注业务逻辑等商业价值点。

注意:RPC的全称为Remote Procedure Call,虽然和IPC只有一字之差,但并不相同。

IPC只是一种概念,实现IPC的方式有多种,例如在linux上你可以使用socket等,而Android中则采用了Binder。

[ Read More » ]

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 » ]

Android ProGuard: Please correct the above warnings first

Android

编译与反编译,一对相辅相成的矛盾。反编译有时候会和不光彩的事情联系在一起,以致于编译者常常费劲心思,加大反编译的难度,比如采用混淆代码等方式。ProGuard正是这么一个工具:

The ProGuard tool shrinks, optimizes, and obfuscates your code by removing unused code and renaming classes, fields, and methods with semantically obscure name.

[ Read More » ]
←Older