首先澄清,本文讨论的信号是 Linux 软中断信号,而不是手机状态条里面用于显示当前手机通信强度的那个信号。 本文是 增量型博客,内容会不断更新,请改话题感兴趣的朋友偶尔可以再回头来看看更新的内容。
我们知道,Unix系统里信号是一种软中断。尽管本身存在缺陷(后面会讨论到),但是作为Unix系统重要的异步事件处理方式之一,在Unix系统中发挥重要的作用。可以说,所有Unix系统(包括Linux)都不可能忽略信号的支持。 Android 本质上也是个在 Linux 系统,自然也少不了对 信号处理的支持。
但我们也知道,Android和其他Linux系统一个很大的差异就是增加了虚拟机的支持(Dalvik vm),所有的应用程序都会在虚拟机实例里运行 (当然,虚拟机实例还是在传统的进程里运行)。为了更好的支持应用程序的开发和调试,Android对信号的处理增加了额外的逻辑(下面会详细讨论到)。这也使得 Android系统中信号的处理行为和传统的Linux系统有所区别。 很多朋友,在开始接触 Android信号处理时,可能也会碰到一些困惑。尽管其实答案很简答, 但是网上这方面的资料少,还是需要花不少时间去摸透。 本文写作的目的就是试图 将 android信号处理的方方面面呈现给大家。 让大家在最短的时间内掌握android信号处理的知识,并学以致用。
虽然,android 信号处理并不复杂,但是如果用一篇文章还真难以描述清楚而又有条理。所以对信号处理打算分几部分讨论:
1. 概述 就是本文。 简述 Android 系统对信号处理的概貌,并说明测试环境。
2. 信号产生。讨论 android信号的产生原因以及最简单的测试方法。
3. 信号处理。 讨论Android系统对传统的信号处理的扩展是怎么实现的。
4. 应用扩展。 讨论在实际开发中,怎样利用android信号机制为我们服务。
请读者先看看自己对 Android信号处理的了解程度再决定是否需要 花时间关注该系列的博文。以下是几个相关的问题:
1. Android信号处理比起传统的linux系统(如 Ubuntu)有什么区别么?
2. Android信号来源于哪里?怎样用最简单的方式产生信号,并测试信号处理的行为。?怎样才能最快的分析有信号处理产生的问题?
3. Android是如何实现对传统信号处理的扩展。
4. 我们日常开发中,Android信号处理机制可以帮助我们处理那类问题?
如果你能回答全部问题,恭喜你。你对Android信号处理的理解别我深(请留下联系方式,有事我好请教你)。如果有些问题你不能回答,这个系列的文章正是帮你补充这方面的知识。
本文的测试环境是:
模拟器: Ubuntu 11.04 运行 最新的Android 4.0.1 模拟器 (搭配相关的环境请看 Android4.0.1 源码下载,模拟器编译和运行 一文)
手机: Droid3 with android 2.3.6
平板: Xoom2 with android 3.2
除非有行为上得差异,否则所有测试结果都将出自 模拟器(方便,呵呵)
对了,上面提到的传统信号处理模型的缺陷,主要是有如下几个点:
1. 难以扩展。 这可能是历史原因造成的,早期信号处理模型中,为了效率和方便,大多使用整型位码来表示某一信号。而总数控制在32位之内。大多数已经有明确的含义,而大多只提供 SIGUSR1 和 SIGUSR2供用户使用。
2. 某些情境下的行为不可靠。比如相同的信号连续到达后,大多只作为一个信号处理。也就是说你只能知道该信号是否到达,而不能确定到达了一个还是是个。
对于,缺陷1,似乎没有什么好办法(总不能另外造出信号类型啊)。而可行的方法就是重用这两个信号。
对于缺陷2,如果需要连续产生相同的信号而又要处理,可以在期间加入延迟。后面会看到 Android就是这么做的。
分享到:
相关推荐
网络安全意识教育面面观.pdf
中学生消费面面观PPT学习教案.pptx
不婚面面观-中国当代不婚现象白皮书.pdf
不婚面面观:中国当代不婚现象白皮书.pdf 不婚面面观:中国当代不婚现象白皮书.pdf 是一份详细的行业报告,对中国当代不婚现象进行了深入的分析和研究。本报告的主要目的是了解不婚者的心理状态、生活方式、择偶...
首先,Python的条件语句是编程中用于控制程序流程的基本结构之一。条件语句包括if语句、elif语句和else语句。if语句用于执行当条件为True时的代码块,而else语句则在条件为False时执行。else语句后不跟任何条件...
航空运输行业深度研究报告:航空业复苏之路系列研究(一),后疫情时代海外航司面面观.pdf
【咨询行业的概述】 咨询行业,作为一个专业知识密集型的服务行业,主要为企业和其他组织提供战略规划、管理咨询、技术咨询等多元化服务。它起源于20世纪初,由一系列先驱者如James McKinsey、Arthur D. Little等...
设计模式之我见(1):设计模式概述 (100%) 设计模式面面观(2):设计模式基本要素与原则 (100%) 设计模式面面观(3):单件模式(Singletion)-创建型模式 (100%) 设计模式面面观(4):工厂模式...
【固定收益专题报告:担保公司面面观】 担保行业在金融体系中扮演着重要的角色,特别是在固定收益市场中,担保作为一种债项增级手段,能够帮助企业更容易获得融资,并降低投资者的风险感知。本报告深入探讨了担保...
vs2005应用之GridView 技术面面观
将int、date等非字符串类型的数据转换为字符串存储虽然可行,但不推荐,因为不同数据类型有各自的校验规则,字符串类型的处理通常更为复杂,可能影响查询效率。 实验数据显示,两张存储数据一致的表emp2和emp3,但...
.NET 中的变量绑定方法面面观和虚拟仪器技术都是电子专业教学中的重要组成部分,它们可以提高教学效率和质量,并且降低教学成本。 关键词:绑定;控件属性;标签属性;JavaScript 代码;Html 显示内容;虚拟仪器...
在ArcGIS中的Python开发技术是GIS(地理信息系统)专业领域中不可或缺的一部分,它结合了强大的地理数据处理能力和Python编程语言的灵活性。ArcGIS是Esri公司出品的一款领先的GIS软件,它提供了丰富的地理空间分析...
留守儿童面面观 .pdf
观赏龟面面观.pdf
投资理财面面观.pptx
因特网应用面面观.ppt