View绘制流程的入口
View繪制流程的入口是WindowManager.add(decor,?l),從Activity的創(chuàng)建開始分析,具體流程如下:
Activity.onCreate()
setContentView(R.layout.activity_main);
Window.setContentView(layoutResID);
ActivityThread.handleResumeActivity()
ActivityThread.performResumeActivity()
Activity.onResume()
wm.addView(decor,?l); ?//把DecorView加載到WindowManager,這時(shí)才開始View的繪制
WindowManangerImpl.addView()
mGlobal.addView(view, params, mDisplay, mParentWindow); //WindowManagerGlobal
root.setView(view, wparams, panelParentView); //ViewRootImpl
ViewRootImpl.requestLayout()?
ViewRootImpl.scheduleTraversals()
doTraversal()
performTraversals()?//這個(gè)方法里就開始測(cè)量、布局、繪制了
詳細(xì)的繪制流程,可參考?invalidate()源碼分析
可以看到,在Activity.onResume()執(zhí)行完后,才開始View的繪制流程,這也就解釋了在Activity的onCreate()或onResume()方法中,是獲取不到控件的寬和高的。
總結(jié)
以上是生活随笔為你收集整理的View绘制流程的入口的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android中Messenger进程间
- 下一篇: View的绘制流程