19 悠然红茶

尚未进行身份认证

求真求是

等级
博文 19
排名 6w+

MediaScannerService研究

MediaScannerService是Android平台提供的一个用于扫描手机中多媒体文件的应用级service。它并不是系统服务。MediaScannerService和MediaProvider有着非常紧密的关系,因为扫描出的结果总需要存储到某个地方来展现给用户。那么它们具体是如何结合的呢?本文将逐步加以阐述。

2016-11-16 21:34:06

详细剖析IntentService的运作机理

在讲述Service机制的文章里,我们曾经稍微提起过IntentService,今天再来详细剖析一下它。说起来,IntentService只是一个处理异步请求的服务基类而已。当人们通过调用startService()启动IntentService时,实质上是向其发送了一个请求。而如果有多个地方同时向同一个IntentService发送请求的话,那么这些请求会被串行化处理。所以,IntentService常常用于执行那种“一次性处理”的工作。

2016-11-07 21:53:45

Android Service演义

在Android平台上,那种持续性工作一般都是由service来执行的。不少初学者总是搞不清service和线程、进程之间的关系,这当然会影响到他们开展具体的开发工作。其实,简单说起来,service和线程、进程是没什么关系的。我们知道,在Android平台上已经大幅度地弱化了进程的概念,取而代之的是一个个有意义的逻辑实体,比如activity、service等。Service实体必然要寄身到某个进程里才行,它也可以再启动几个线程来帮它干活儿。但是,说到底service只是一个逻辑实体、一个运行期上下文

2016-11-06 15:15:52

聊一聊Android的消息机制

从技术实现上来说,消息机制还是比较简单的。从大的方面讲,不光是Android平台,各种平台的消息机制的原理基本上都是相近的。本文将基于Android4.4代码,为大家剖析一下Android的消息机制。

2015-09-13 16:19:10

Android4.4的zygote进程(下)

3.2.4启动Android系统服务——startSystemServer()接下来就是启动Android的重头戏了,此时ZygoteInit的main()函数会调用startSystemServer(),该函数用于启动整个Android系统的系统服务。其大体做法是先fork一个子进程,然后在子进程中做一些初始化动作,继而执行SystemServer类的main()静态函数。需要注意的是,

2015-09-13 13:51:20

Android4.4的zygote进程(上)

前些天为了在科室做培训,我基于Android4.4重新整理了一份关于zygote的文档。从技术的角度看,这几年zygote并没有出现什么大的变化,所以如果有人以前研究过zygote,应该不会对本文写的内容感到陌生。本篇文章和我的上一篇文章《Android4.4的init进程》可以算是姊妹篇啦。读完这两篇文章,我相信大家对Android的启动流程能有一些大面上的认识了。

2015-09-13 11:15:19

Android4.4的init进程

前些日子需要在科室内做关于Android系统启动流程的培训。为此,我在几年前的技术手记的基础上,重新改了一份培训文档。在重新整理文档期间,我也重读了一下Android4.4的相关代码,发现还有一些东西是我以前一直没重视过的,所以打算写下来总结一二。

2015-09-12 13:35:04

深入讲解Android Property机制

本文以Android4.4为准,深入讲解AndroidProperty机制的运作机理。

2015-09-11 21:27:33

写个简单的飞机游戏玩玩

前些天看了《Android游戏编程之从零开始》一书中一个简单飞机游戏的实现代码,一时手痒,也写了一个练练手。虽然我的本职工作并不是写游戏,不过程序员或多或少都有编写游戏的情结,那就写吧,Justforfun!

2015-01-02 13:24:18

说说Android应用的persistent属性

在Android系统中,有一种永久性应用。它们对应的AndroidManifest.xml文件里,会将persistent属性设为true。

2015-01-02 10:50:13

品茗论道说广播(Broadcast内部机制讲解)(下)

我们在编写Android程序时,常常会用到广播(Broadcast)机制。从易用性的角度来说,使用广播是非常简单的。不过,这个不是本文关心的重点,我们希望探索得再深入一点儿。我想,许多人也不想仅仅停留在使用广播的阶段,而是希望了解一些广播机制的内部机理。如果是这样的话,请容我斟一杯红茶,慢慢道来。

2015-01-01 21:40:28

品茗论道说广播(Broadcast内部机制讲解)(上)

我们在编写Android程序时,常常会用到广播(Broadcast)机制。从易用性的角度来说,使用广播是非常简单的。不过,这个不是本文关心的重点,我们希望探索得再深入一点儿。我想,许多人也不想仅仅停留在使用广播的阶段,而是希望了解一些广播机制的内部机理。如果是这样的话,请容我斟一杯红茶,慢慢道来。

2015-01-01 21:31:55

说说PendingIntent的内部机制

在Android中,我们常常使用PendingIntent来表达一种“留待日后处理”的意思。从这个角度来说,PendingIntent可以被理解为一种特殊的异步处理机制。不过,单就命名而言,PendingIntent其实具有一定误导性,因为它既不继承于Intent,也不包含Intent,它的核心可以粗略地汇总成四个字——“异步激发”。

2015-01-01 16:36:46

红茶一杯话Binder(传输机制篇_下)

红茶一杯话Binder(传输机制篇_下) 侯亮 1事务的传递和处理       从IPCThreadState的角度看,它的transact()函数是通过向binder驱动发出BC_TRANSACTION语义,来表达其传输意图的,而后如有必要,它会等待从binder发回的回馈,这些回馈语义常常以“BR_”开头。另一方面,当IPCThreadSt

2013-12-01 19:31:13

红茶一杯话Binder(传输机制篇_中)

红茶一杯话Binder(传输机制篇_中) 侯亮 1谈谈底层IPC机制吧       在上一篇文章的最后,我们说到BpBinder将数据发到了Binder驱动。然而在驱动层,这部分数据又是如何传递到BBinder一侧的呢?这里面到底藏着什么猫腻?另外,上一篇文章虽然阐述了4棵红黑树,但是并未说明红黑树的节点到底是怎么产生的。现在,我们试着回答这些

2013-12-01 19:29:30

红茶一杯话Binder(传输机制篇_上)

红茶一杯话Binder(传输机制篇_上) 侯亮 1Binder是如何做到精确打击的?       我们先问一个问题,binder机制到底是如何从代理对象找到其对应的binder实体呢?难道它有某种制导装置吗?要回答这个问题,我们只能静下心来研究binder驱动的代码。在本系列文档的初始篇中,我们曾经介绍过ProcessState,这个结构是属于

2013-12-01 19:27:49

红茶一杯话Binder(ServiceManager篇)

红茶一杯话Binder(ServiceManager篇)侯亮 1.先说一个大概       Android平台的一个基本设计理念是构造一个相对平坦的功能集合,这些功能可能会身处于不同的进程中,然而却可以高效地整合到一起,实现不同的用户需求。这就必须打破过去各个孤立App所形成的天然藩篱。为此,Android提供了Binder机制。

2013-12-01 19:25:47

红茶一杯话Binder(初始篇)

红茶一杯话Binder(初始篇)侯亮1什么是Binder?      简单地说,Binder是Android平台上的一种跨进程交互技术。该技术最早并不是由Google公司提出的,它的前身是BeInc公司开发的OpenBinder,而且在Palm中也有应用。后来OpenBinder的作者DianneHackborn加入了Google公司,并负责Android

2013-12-01 19:23:07

AlarmManager研究

AlarmManager研究侯亮 1.概述       在Android系统中,闹钟和唤醒功能都是由AlarmManagerService控制并管理的。我们所熟悉的RTC闹钟以及定时器都和它有莫大的关系。为了便于称呼,我常常也把这个service简称为ALMS。       另外,ALMS还提供了一个AlarmManager辅助类。在实际的代码

2013-12-01 19:17:16
奖章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!