`
yidongkaifa
  • 浏览: 4038469 次
文章分类
社区版块
存档分类
最新评论

MTK 11A 11B 进入拨号盘界面流程

 
阅读更多

从主菜单点击dialer图标

VappMainmenuScr::onAppClicked
srv_appmgr_launch
vapp_dialer_launch_from_phb
vapp_phb_launch

调用类的接口内部流程

VfxAppLauncher::launch//公共接口,通过这个接口可以跳转到下个应用类的接口
VfxAppLauncher::static_launchByMem
VfxAppLauncher::createContext
VfxAppLauncher::onContextReady
VfxAppLauncher::static_run

VfxApp::processRun//这个函数将运行onRun,所以在进入VappPhbApp类之后,会调用VappPhbApp::onRun

VappPhbApp::onRun

进入屏幕

VfxAppScr::show//进入窗体屏幕,如果没有这一句话,将不会看到任何窗体
mmi_frm_scrn_first_enter
mmi_frm_scrn_first_enter_ex
VfxAppScr::static_entry
VfxTopLevel::enterToScreen
VfxTopLevel::processScreenEnter
/////关键节点1
VfxMainScr::processEnter//这个函数将运行on1stReady,on2stReady,所以在进入VappPhbScr类之后,会调用VappPhbScr::on1stReady

VappPhbScr::on1stReady

>>>>>> VFX_OBJ_CREATE(page, VappPhbPage, this);
VfxObject::init//注意,只要调用VFX_OBJ_CREATE,都会先init
VcpTabCtrlPage::onAfterInit
VcpTabCtrlPage::onDirtyUpdate

VcpTabCtrlPage::doTabSwitch//这个函数将运行onCreateTabPage,所以在进入VappPhbPage类之后,会调用VappPhbPage::onCreateTabPage

VappPhbPage::onCreateTabPage

>>>>>VFX_OBJ_CREATE(page, VappDialerPage, this);
VfxObject::init
VappDialerPage::onInit

>>>>>VFX_OBJ_CREATE(m_dataProvider, VappContactListMenuContentProvider, this);
VfxObject::init
VappContactListMenuContentProvider::onInit
VappContactDialerSearchListData::buildContactList

>>>>>VFX_OBJ_CREATE(m_listContact, VappContactDialerSearchListData, this);
VfxObject::init
VappContactDialerSearchListData::onInit

VfxPage::processEnter//这个函数被调用是引用在VfxMainScr::processEnter函数中on2stReady执行之后,会调用到p->processEnter
//但是这里的p是通过VfxPage *p = VFX_OBJ_DYNAMIC_CAST(info->obj.get(), VfxPage);这句话得来的
VcpTabCtrlPage::onEnter
VfxPage::processEnter
//再次调用到这个函数,是因为VfxPage::processEnter函数中在执行onEnter之后,会再次onEntered();

VappDialerPage::onEntered
VappDialerPage::resetDialerList
VappContactListMenuContentProvider::search
//调用search

基本的初始化已经完成,所有需要使用的窗体类也已经调用完成,即完成了ON ENTER动作

在enter之后,填充数据,采用signal的形式

下边这段是MTK signal0类的简单流程,用来启动signal。

VfxScreen::processAfterEnter////关键节点2
vfx_screen_check_update//这个函数被调用是因为上个函数中VfxTopLevel *topLevel = VFX_OBJ_GET_INSTANCE(VfxTopLevel);
vfx_mmi_check_update
VfxAsyncSignalQueue::processEmit
VfxAsyncSignalUtil::processPostEmit

emitEntry//这个函数来自VfxSignal0类

获取list item总数

VfxControl::processUpdate
VcpBaseListMenu::onUpdate
//这个函数被调用是因为VfxControl::processUpdate函数中调用onUpdate
VcpBaseMenu::onUpdate
VcpListMenuLayout::getContentLength
VcpListMenuLayout::getCellCount

VappContactListMenuContentProvider::getCount()
VappContactDialerSearchListData::getTotalCount()
//得到list中的总数

在dialer界面自动加锁之后再解锁进入的流程
VappScreenLockFrame::notifyUnlock
m_signalUnlocked.emit
VfxBaseSignal::emitSlots

emitEntry//这个函数来自VfxSignal0类

VappScreenLockPage::onUnlockHandler
vapp_screen_lock_close

VfxAppLauncher::terminate
VfxApp::exit
mmi_frm_group_close
mmi_frm_group_close_ex
scenario_process_post_evt_ex
//这个函数中的处理是通过mmi_go_back_to_history起作用
mmi_go_back_to_history
mmi_frm_go_back_to_history_int
scrn_group_adaptor_entry
mmi_frm_shell_active
scenario_process_post_evt_ex
group_post_active
execute_node_active
scrn_active

VfxAppScr::static_entry
VfxTopLevel::enterToScreen
VfxTopLevel::processScreenEnter
VfxMainScr::processEnter
VfxPage::processEnter
VcpTabCtrlPage::onEnter
VfxPage::processEnter

VappDialerPage::onEntered
VappDialerPage::resetDialerList
VappContactListMenuContentProvider::search

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics