安卓rom源码分析程序员

SIM卡framwork层框架以及信息加载

2018-02-26  本文已影响28人  代码视觉
                 UiccController
                       #
                       |
                  UiccCard
                       #     #
                       |     ------------------
           UiccCardApplication    CatService
                     #                #
                     |                |
                IccRecords       IccFileHandler
             ^ ^ ^                 ^ ^ ^ ^ ^
SIMRecords---- | |           | | | | ---SIMFileHandler
RuimRecords----- |           | | | ----RuimFileHandler
IsimUiccRecords---           | | -----UsimFileHandler
                             | ------CsimFileHandler
                             ----IsimFileHandler

1、开机后Phone额进程拉起之后,PhoneFactory创建UiccController。
2、当PhoneFactory传进GsmCdmaPhone之后,在GsmCdmaPhone的构造函数中创建UiccController的观察者,IccCardProxy将作为UiccController,同时监听卡状态的变化。
3、当底层检卡成功后即有ATR上报后,modem主动发送RIL_UNSOL_SIM_STATUS_CHANGE的消息,此事RIL将此消息通知到它的观察者UiccController。
4、UiccController收到通知之后将向磨的么进一步查询获取卡的信息。
5、信息获取成功之后,将进一步判断是否需要创建UiccCard对象,如果创建过则进行更新,否则UiccController将根据卡信息创建对应的UiccCard对象。
6、UiccCard对象创建之后,将在其构造函数中进一步创建对应的UiccCardApplication和IccRecords。
IccRecords只是一个抽象类,UiccCardApplication将更具modem上报的卡类型创建出实际的SIMRecords或RuimRecords或IsimUiccRecords等
当IccRecords被创建之后,同样作为RIL的观察者,监听Iccrefresh的消息
7、UiccController完成这些之后卡信息还未完全加载完毕,将进一步通知IccCardProxy对象,IccCardProxy收到通知之后注册成为IccRecords的观察者。
8、收到modem主动上报的RIL_UNSOL_SIM_REFRESH消息之后,RIL将通知观察者IccRecoeds。IccRecoeds收到通知后将进一步主动与modem获取卡信息 。
9、当卡信息加载完成之后,IccRecords将通知他的观察者。IccCardProxy收到通知之后将发送ACTION_INTERNAL_SIM_STATE_CHANGE广播,完了之后将触发数据卡选择流程。

上一篇下一篇

猜你喜欢

热点阅读