手机开发之三:CoreApp的深入分析
2013-06-13 15:07
204 查看
四.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所完成的工作比较多且杂,主要说来有如下几件事。
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启动和消息传送的方式来发生关系和进行模块间通信。
相关文章推荐
- [ios开发基础之CoreData[4]]CoreData深入分析篇
- 手机点餐APP开发需求分析
- 手机 app 开发的几种方式 ionic 学习思路以及 ionic 新建的项目分析
- 手机开发之二:Boot代码深入分析
- 【cocos2d-x 手机游戏开发】Cocos2d-x 2.0 渲染到纹理深入分析
- APP开发难吗?澳大利亚10岁儿童已开发5个手机App
- 深入分析:Android中app之间的交互(一,使用Action)
- 深入分析JavaWeb 5 -- Servlet开发
- 用S60操作系统SDK开发NOKIA手机应用程序(5)-范例HelloWorld分析
- 深入分析Android (build/core/*.mk脚本)
- 佛山APP外包公司:模板式APP开发分析
- jquery mobile + html5 手机app表单跨域提交实例(手机app开发html5 juqery moblie phonegap系列一)
- 使用Charles对手机app网络包进行分析
- Android关于Theme.AppCompat相关问题的深入分析
- .Net语言 APP开发平台——Smobiler学习日志:如何在手机上实现条形图的展示
- 龙芯软件开发(32)-- USB协议深入分析
- YARN/MRv2 MRAppMaster深入剖析—ContainerLauncher分析
- 【Android】1.0 第1章 C#之Android手机App开发
- WebAPP开发之viewport的深入理解
- 深入理解Spark 2.1 Core (三):任务调度器的原理与源码分析