自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 论坛 (12)

原创 品读鸿蒙HDF架构(二)

品读鸿蒙HDF架构(二) 侯 亮在前一篇文章里,我们阐述了在启动DeviceManager这个核心服务时,是如何生成所有的host配套设施的,下面我们来进一步剖析细节。我们已经知道,一个Host对应一个DevHostServiceClnt和一个DevHostService,很明显主要行为都包含在后者内部。当后者启动时,会执行到DriverInstallerStartDeviceHost(),该函数又会调用DevHostServiceStartServie(),这些内容...

2020-10-02 15:12:19 4200

原创 品读鸿蒙HDF架构(一)

品读鸿蒙HDF架构(一) 侯 亮1 铺垫一下鸿蒙系统终于公开源代码了,正可谓“千呼万唤始出来”。笔者也手痒下载了一套代码,并研读了一二。这里就先编写一篇关于HDF的文档。其实,不同读码人都会有各自读代码的习惯和切入点,我之所以从HDF入手,完全是出于偶然。因为在一开始读官方文档时,看到说一部机器可以操作另一部机器的设备,为此,设备需要有一个重要的PublishService()函数。这种跨设备操作的能力也是鸿蒙的一大特色,应该比较有趣,于是就...

2020-10-02 14:46:33 763

原创 MediaScannerService研究

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

2016-11-16 21:34:06 2399

原创 详细剖析IntentService的运作机理

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

2016-11-07 21:53:45 1251

原创 Android Service演义

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

2016-11-06 15:15:52 712 2

原创 聊一聊Android的消息机制

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

2015-09-13 16:19:10 1443

原创 Android4.4的zygote进程(下)

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

2015-09-13 13:51:20 2350

原创 Android4.4的zygote进程(上)

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

2015-09-13 11:15:19 1154

原创 Android4.4的init进程

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

2015-09-12 13:35:04 1075 1

原创 深入讲解Android Property机制

本文以Android 4.4为准,深入讲解Android Property机制的运作机理。

2015-09-11 21:27:33 1707 2

原创 写个简单的飞机游戏玩玩

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

2015-01-02 13:24:18 4404 2

原创 说说Android应用的persistent属性

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

2015-01-02 10:50:13 4294 6

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

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

2015-01-01 21:40:28 3306 5

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

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

2015-01-01 21:31:55 2591 3

原创 说说PendingIntent的内部机制

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

2015-01-01 16:36:46 2414 2

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

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

2013-12-01 19:31:13 2954 4

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

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

2013-12-01 19:29:30 4475 3

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

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

2013-12-01 19:27:49 3615 1

原创 红茶一杯话Binder(ServiceManager篇)

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

2013-12-01 19:25:47 3886 4

原创 红茶一杯话Binder(初始篇)

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

2013-12-01 19:23:07 7995 6

原创 AlarmManager研究

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

2013-12-01 19:17:16 12977 16

空空如也

深入讲解Android Property机制

发表于 2015-08-27 最后回复 2015-08-27

Python如何操控内存buffer?

发表于 2006-05-19 最后回复 2007-04-04

每次招聘结束之时,总会感到一丝无奈

发表于 2006-08-14 最后回复 2006-08-28

请问谁知道下面python代码中,为什么加上Button以后,mainframe不再调用callback了?谢谢。

发表于 2004-04-26 最后回复 2004-04-29

有谁知道C#,.Net有什么好的入门书籍和探索核心的书籍?

发表于 2003-09-25 最后回复 2003-09-25

请教vc中嵌入汇编,GlobalAlloc为何总不成功??

发表于 2003-06-19 最后回复 2003-06-23

DebugOutput怎么用

发表于 2002-10-11 最后回复 2002-10-11

怎么知道路由器记录的特定MAC地址当前时刻对应的IP地址

发表于 2002-09-21 最后回复 2002-09-24

如何把callback函数包到类中

发表于 2002-06-04 最后回复 2002-06-04

problem of return "aaa"

发表于 2002-05-09 最后回复 2002-05-09

这样new和delete会有潜在问题吗?

发表于 2002-04-29 最后回复 2002-04-29

cin出了什么问题?

发表于 2002-04-07 最后回复 2002-04-09

空空如也
提示
确定要删除当前文章?
取消 删除