手机开发之三:CoreApp的深入分析
来源:互联网 发布:vb中chr(10)是什么意思 编辑:程序博客网 时间:2024/06/05 16:01
四.CoreApp的深入分析
目前参考代码里面的CoreApp所完成的工作比较多且杂,主要说来有如下几件事。
a)系统组件初始化;
b)开机Logo的显示;
c)Sim卡检测和Pin码校验;
d)系统状态信息更新;
i.电池状态;
ii.网络信号;
iii.网络模式;
e)IAnnunciator的维护与更新;
f)通话处理,打电话的输入框;
g)主菜单处理;
h)手机各种设置功能的处理;
i)关机键的处理;
目前CoreApp里面的代码,完成了太多的事,其实完全可以剥离成不同的模块来完成,大致可以分成如下几个部分。
1、总控模块;(CoreApp)
总控模块,主要完成手机按下开机键之后的各种初始化工作,同时此模块也是整个手机的控制中心,由它来完成手机的一些全局性工作,主要有如下几项。
1.系统初始化、Sim卡检测和Pin码校验;
2.开机Logo或者开机动画的显示;
3.底层服务程序的启动;(WmsApp、DialApp等);
4.系统配置信息的统一管理;
由于写配置信息到NV上面是一件非常慢的工作,每次上层App改变配置之后都去操作NV,很影响速度。所以,可以在内存中开一个配置信息的Buffer,上层App操作的实际上是这个Buffer,然后由Core在空闲的时候再统一写到NV上去。
5.关机处理;
[注]
由于CoreApp是在Idle Applet的界面之下,所以,为了能够实现“一键回菜单”的功用,有可能需要修改ui_task里面的Key处理函数,将所有的Key消息转发给 Core,这样Core就可以得到所有的Key事件了。(现在的ui_task只把Key事件发送给了AEE,而AEE只会将Key事件发送给当前活动 Applet)。
2、Idle模块;
主要完成待机界面的画图工作,主要有两部分:
1.系统信息指示栏;
2.待机界面(位图、动画、时钟、日历等);
3.软键
[注]
Idle只负责界面工作,不负责具体的系统状态信息的获取工作,这个工作将由其它模块完成。
3、Polling
手机状态信息查询模块,主要是完成手机各种状态信息的更新与维护。主要有如下几种:
a.电池强度;
b.网络信号强度;
c.网络模式(C/G);
d.PLMN网络名;
e.短消息、通话状态、闹铃;(这个由专门的模块完成,不在Polling之列);
f.各种外设信息;(USB、耳机插入等);
g.其它各种杂项信息;
4、Menu模块
菜单模块主要分两部分,一部分是主菜单的实现,另一个子菜单的实现。一般来讲,手机上的菜单系统应该是由Menu模块去统一完成,而不是由每一个子程 序去手动完成。菜单模块一般只需要负责到主菜单、二级菜单和三级菜单就Ok了。三级菜单之后的界面,就由每一个App单独去维护了。
5、其它功能App模块;
每一个功能模块,由一个专门的App来完成,这样的话,模块的独立性强,便于单独开发。模块间通过App启动和消息传送的方式来发生关系和进行模块间通信。
- 手机开发之三:CoreApp的深入分析
- 手机开发之二:Boot代码深入分析
- Android N的那些coreApp
- 交换机开发(三)—— 深入分析三层网络交换机的原理和设计
- 交换机开发(三)—— 深入分析三层网络交换机的原理和设计
- 交换机开发(三)—— 深入分析三层网络交换机的原理和设计
- Android核心分析 之三:手机之硬件形态
- 《Linux keepalived与lvs的深入分析》三之负载调度算法
- 《Linux keepalived与lvs的深入分析》三之负载调度算法
- Tripleo之nova-compute 和Ironic的代码深入分析(三)
- 《Linux keepalived与lvs的深入分析》三之负载调度算法
- Spring MVC framework深入分析之三(上)--执行过程
- Spring MVC framework深入分析之三(下)--执行过程
- Spring MVC framework深入分析之三(上)--执行过程
- Spring MVC framework深入分析之三(下)--执行过程
- Spring MVC framework深入分析之三(上)--执行过程
- Spring MVC framework深入分析之三(下)--执行过程
- Java多线程(三)之ConcurrentHashMap深入分析
- yum server 的 nginx 配置
- Glusterfs (ls操作代码处理分析)
- 使用CXF实现WebService,并在客户端实现动态调用
- 删除文件夹以及文件夹下的所有文件
- vs下debug运行正常,release下出现异常
- 手机开发之三:CoreApp的深入分析
- oracle system 密码修改
- IO标准库:输出缓冲区
- cocos2dx 自学知识点之二 菜单项
- C/C++函数调用约定
- 如何成为一名优秀的软件测试工程师
- Android Conversion to Dalvik format failed: Unable to execute dex: Target out of range: +0000fffa
- void及void指针含义的深刻解析
- 联想笔记本&台式机专用系统 GHOSTXPSP3 v2013.06 海量驱动DVD版