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

来源:互联网 发布:excel2003软件下载 编辑:程序博客网 时间:2024/05/22 11:36

从主菜单点击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