View和Activity的生命周期

View和Activity的生命周期

  • 如果根布局为RelativeLayout,那么onMeasume() 共会执行4次
  • 如果根布局为LinearLayout
    • 如果控件有weight 属性,那么onMeasume() 共会执行4次
    • 如果控件有weight属性,但是根布局中只有唯一一个子控件,那么onMeasume() 共会执行2次

根局部为RelativeLayout

  1. 开启Activity
E/log: Activity生命周期:onCreate
E/view的生命周期: onCreate
E/view的生命周期: onFinishInflate
E/log: Activity生命周期:onStart
E/log: Activity生命周期:onResume
E/view的生命周期: onAttachedToWindow
E/view的生命周期: onMeasure
E/view的生命周期: onMeasure
E/view的生命周期: onSizeChanged
E/view的生命周期: onLayout
E/view的生命周期: onWindowFocusChanged true
E/view的生命周期: onMeasure
E/view的生命周期: onMeasure
E/view的生命周期: onLayout
E/view的生命周期: onDraw
复制代码
  1. 关闭Activity
E/view的生命周期: onWindowFocusChanged false
E/log: Activity生命周期:onPause
E/log: Activity生命周期:onStop
E/log: Activity生命周期:onDestroy
复制代码
  • 开启另外的Activity

    1. 开启一个的Activity,使原本的Activity进入onStop
    E/log: Activity生命周期:onPause
    E/view的生命周期: onWindowFocusChanged false
    E/log: Activity生命周期:onStop
    复制代码
    1. 退出这个Activity,使原本的Activity重新进入到前台
    E/log: Activity生命周期:onRestart
    E/log: Activity生命周期:onStart
    E/log: Activity生命周期:onResume
    E/view的生命周期: onWindowFocusChanged true
    E/view的生命周期: onDraw
    复制代码
  • 开启一个透明的Activity

    1. 开启一个透明的Activity,使原本的Activity进入onPause

      E/log: Activity生命周期:onPause
      E/view的生命周期: onWindowFocusChanged false
      复制代码
    2. 关闭透明的Activity,使原本的Activity,进入onResume

      E/log: Activity生命周期:onResume
      E/view的生命周期: onWindowFocusChanged true
      复制代码

根局部为LinearLayout

  • 子控件不含有weight属性

  • 这个控件含有weight属性但是它是根布局的唯一子控件

    E/log: Activity生命周期:onCreate
    E/view的生命周期: onCreate
    E/view的生命周期: onFinishInflate
    E/log: Activity生命周期:onStart
    E/log: Activity生命周期:onResume
    E/view的生命周期: onAttachedToWindow
    E/view的生命周期: onMeasure
    E/view的生命周期: onSizeChanged
    E/view的生命周期: onLayout
    E/view的生命周期: onMeasure
    E/view的生命周期: onLayout
    E/view的生命周期: onDraw
    E/view的生命周期: onWindowFocusChanged true
    复制代码
  • 控件含有weight属性,并且它不是其根局部中的唯一子控件

    E/log: Activity生命周期:onCreate
    E/view的生命周期: onCreate
    E/view的生命周期: onFinishInflate
    E/log: Activity生命周期:onStart
    E/log: Activity生命周期:onResume
    E/view的生命周期: onAttachedToWindow
    E/view的生命周期: onMeasure
    E/view的生命周期: onSizeChanged
    E/view的生命周期: onLayout
    E/view的生命周期: onMeasure
    E/view的生命周期: onLayout
    E/view的生命周期: onDraw
    E/view的生命周期: onWindowFocusChanged true
    复制代码

如果view没有任何没有内容,并且根布局内有其他内容,则最后的onDraw不会执行

<!--自定义view有weight, view中无内容显示,并且根布局中有其他控件,onDraw方法没有被执行-->
E/log: Activity生命周期:onCreate
E/view的生命周期: onCreate
E/view的生命周期: onFinishInflate
E/log: Activity生命周期:onStart
E/log: Activity生命周期:onResume
E/view的生命周期: onAttachedToWindow
E/view的生命周期: onMeasure
E/view的生命周期: onMeasure
E/view的生命周期: onSizeChanged
E/view的生命周期: onLayout
E/view的生命周期: onWindowFocusChanged true
E/view的生命周期: onMeasure
E/view的生命周期: onMeasure
E/view的生命周期: onLayout
复制代码
<!--自定义view无weight,viwe有内容显示,onDraw方法被执行了-->
E/log: Activity生命周期:onCreate
E/view的生命周期: onCreate
E/view的生命周期: onFinishInflate
E/log: Activity生命周期:onStart
E/log: Activity生命周期:onResume
E/view的生命周期: onAttachedToWindow
E/view的生命周期: onMeasure
E/view的生命周期: onSizeChanged
E/view的生命周期: onLayout
E/view的生命周期: onWindowFocusChanged true
E/view的生命周期: onMeasure
E/view的生命周期: onLayout
E/view的生命周期: onDraw
复制代码

转载于:https://juejin.im/post/5a31ee4a51882561a20a7c93

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值