自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 说说Pluma插件管理框架

Pluma是一个用C++开发的可用于管理插件的开源架构,其官网地址为:http://pluma-framework.sourceforge.net/。该架构是个轻量级架构,非常易于理解。

2022-09-13 20:51:25 2385 3

原创 AsyncTask研究(以Android 10.0为准)

1. AsyncTask概述在Android平台上,要执行异步工作时,我们常常会用到AsyncTask。这个类可以算是历史悠久,早在Android 1.5版时,它就存在了。AsyncTask的使用方法比较简单,无非是创建一个AsyncTask派生类对象,重写其doInBackground()函数,然后在合适时机调用这个对象的execute()或executeOnExecutor()函数即可。下面是一段简单的示例代码:private static class MyTask extends Asy

2021-05-25 17:18:07 870 10

原创 说说AsyncTask演化历程里的小纠结

笔者以前写过一篇文章《AsyncTask研究》,阐述了android框架中AsyncTask的实现原理。当时是基于Android 7.0的代码来分析的,后来就没有再跟进AsyncTask的变化了。最近基于Android 10的代码,又看了一下AsyncTask,发现其实现变动了一点点,那么我们不妨重新串一下这几年不同Android版本里AsyncTask的变动,看看会有什么有趣的东西。 当然,AsyncTask的基本原理是没什么本质变化的,大家如有兴趣,可自行参考《AsyncTask研...

2020-11-28 00:52:15 455

原创 轻松一把,写个《扫雷》来玩玩(以wxPython实现)

1. 概述相信大家对《扫雷》游戏都不陌生,它规则简单,且颇具可玩性。从技术的角度来说,这个小游戏实现起来并不太难,所以是个很好的练手题目。今天我们就尝试用wxPython来实现一个简单的《扫雷》游戏。(附件里有全部资源和源码,可供大家参考)下图是我截取的一张游戏效果图,虽然简陋,但已能正常运行。接下来,我们开始详细讲解。2. 《扫雷》规则《扫雷》的游戏规则和操作说明:《扫雷》的基本操作区是个简单的二维地图,长宽随用户选择的游戏难度不同而不同。 地图里可操作的基本单元是小格。

2020-11-18 13:48:54 450 1

原创 如何在wxPython程序里支持多国语言

最近笔者在用wxPython写一些小工具,其中不免涉及到对多国语言的支持,于是翻查了一些资料,解决了相关的技术点。今天特别整理出一份文档,总结一二。基本上来说,要支持多国语言,我们需要以下几个步骤:1)将代码中需要支持多国语言的字符串部分,用_()形式来表达;2)利用pygettext工具,将相关字符串ID抽取出来,并汇总成.pot文件;3)利用类似Poedit这样的工具,打开.pot文件,并生成不同语言对应的.po、.mo文件。4)将.po、.mo文件拷贝到特定子目录。5)在主代码模块中,执

2020-11-16 19:16:43 568

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

品读鸿蒙HDF架构(三) 侯亮现在我们继续研究鸿蒙HDF架构,上回书说到经由HdfDeviceAttach(),HdfDevice节点不但添加进了DevHostService的devices列表,而且还和一个DeviceNodeExt联系起来了,呈现的示意图大致如下:接着,HdfDeviceAttach()最后会调用nodeIf->LaunchNode(),这一步实际上调用的是HdfDeviceLaunchNode(),代码截选如下:【drivers/hdf/f...

2020-10-21 16:20:28 4823 2

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

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

2020-10-02 15:12:19 23256 3

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

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

2020-10-02 14:46:33 8352 7

原创 MediaScannerService研究

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

2016-11-16 21:34:06 3477

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

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

2016-11-07 21:53:45 1515

原创 Android Service演义

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

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

原创 聊一聊Android的消息机制

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

2015-09-13 16:19:10 2263

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

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

2015-09-13 13:51:20 2871

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

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

2015-09-13 11:15:19 1568

原创 Android4.4的init进程

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

2015-09-12 13:35:04 1527 2

原创 深入讲解Android Property机制

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

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

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

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

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

原创 说说Android应用的persistent属性

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

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

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

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

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

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

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

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

原创 说说PendingIntent的内部机制

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

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

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

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

2013-12-01 19:31:13 3581 7

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

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

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

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

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

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

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

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

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

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

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

2013-12-01 19:23:07 9605 7

原创 AlarmManager研究

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

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

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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