View的生命周期和Activity的關(guān)系

示例

啟動一個帶ImageView的Activity:

  • 在Activity onCreate方法中初始化了View , 調(diào)用了View 的onFinishInflate
  • 在執(zhí)行完 Activity的 onPostResume方法之后(第一次onResume之后)才真正開始了View的繪制工作: onAttachedToWindow --> onMeasure --> onSizeChanged --> onLayout --> onDraw


當(dāng)按住鎖屏鍵的時候,即Activity onPause時:

  • Activity調(diào)用onPause ---> View調(diào)用onSaveInstanceState


當(dāng)重新回到頁面的時候,即Activity onResume時:

  • View的生命周期方法沒有被調(diào)用


當(dāng)點(diǎn)擊回退的時候,即Activity Finish時:

  • Activity onPause -> onStop -> onDestroy ----》View調(diào)用onDetachedFromWindow方法


總結(jié):

  • 在Activity onCreate方法中初始化了View 的時候, 調(diào)用了View 的onFinishInflate
  • 在執(zhí)行完 Activity的 onResume 方法之后,才真正開始了View的繪制工作:onMeasure --> onSizeChanged --> onLayout --> onDraw
  • onMeasure,onSizeChanged,onLayout,onDraw可能由于setVisible或onresume調(diào)用多次,而onAttachedToWindow與onDetachedFromWindow在創(chuàng)建與銷毀view的過程中只會調(diào)用一次
  • Activity執(zhí)行onDestroy后,View執(zhí)行onDetackedFromWindow
  • View 的生命周期為:
    [改變可見性] --> 構(gòu)造View --> onFinishInflate --> onAttachedToWindow --> onMeasure --> onSizeChanged --> onLayout --> onDraw -->
    onDetackedFromWindow
建議閱讀

Activity,Window,DecorView,ViewRoot,View的關(guān)系

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容