手机开发之三: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启动和消息传送的方式来发生关系和进行模块间通信。

原创粉丝点击