现在的位置: 首页 > 综合 > 正文

随到,我的Android源码环境开发起步

2013年01月12日 ⁄ 综合 ⁄ 共 734字 ⁄ 字号 评论关闭

前些时候把Android源码环境搞定之后,就着手研究线程/进程间的通信,因为手上的任务是不间断地获取设备事件,再把获得事件反馈给ui更新。按照Android的设计框架,应用程序调用下层服务是按照下图的流程:

 

 

但是,对我来说,Android源码部分内容多了点儿,还不能消化好~~而这次任务主要用到的是类似下图的流程。

 

 

学习了下源码,发现源码在不断地监听设备事件时,会采用Looper与远程控制的机制,中间会通过管道、消息队列什么的方式来唤醒线程。但就我目前还不了解这个方式,于是按照我当前能够实现的程度,稍作修改后,如下图:

 

 

先对1,2说明下:

1是当EventNative中成功获取到设备的事件数据时,会调用EventService中的java方法

2是当进行完1后,通知应用程序更新ui

 

由于我这里没有使用Looper机制,所以不能让系统帮忙通知唤醒线程,但是这里存在这么一个特性:EventNative调用SystemNative后,会一直线程阻塞直到SystemNative成功获取设备事件并把事件传给EventNative,而这个阻塞是系统内核级别的,所以不会对应用层的交互操作有任何影响。于是我利用了这点特性,当EventNative阻塞过后,调用frameworks层的java代码,以替代Looper中的管道唤醒。这个方法偶合性太强,不利于维护,但作为深入了解源码知识的前奏~

这里暂不给出代码,一来是因为明天就是春节,想把这些事儿放放;二来更重要的是,我才写出自用的Demo,还没来得及做更多测试与整理。故在些先把一种我这挫思路介绍介绍下。

 

新春来到,祝大家假日愉快,收红包的收得开开心心,发红包的发得利利是是~~^_^新的一年,都向新的目标迈进~~~

【上篇】
【下篇】

抱歉!评论已关闭.