Android开发——View的生命周期总结

0.前言

今天看到一个概念是View的生命周期,有点懵逼,听说过Activity的生命周期,Fragment的生命周期,对View的生命周期好像没什么概念啊。难道layoutdraw这些也算是生命周期的方法吗?因此查阅、整理了一些资料,有了此文。

 

1View生命周期相关方法

View的生命周期从构造方法开始依次执行以下几个方法,该View的可见性为默认值时:

0Constructors()

View在代码中被创建时调用第一种构造方法,Viewlayout中加载出来时会被调用第二种构造方法,其中XML中的属性也会被解析。

1onFinishInflate()

该方法当View及其子ViewXML文件中加载完成后触发调用。通常是在Activity中的onCreate方法调用后调用

2onVisibilityChanged()

该方法在当前View或其祖先的可见性改变时被调用。如果View状态不可见或者GONE,该方法会第一个被调用。

3onAttachedToWindow() 

View被附着到一个窗口时触发Activity第一次执行完onResume方法后被调用

4onMeasure()

 该方法确定View以及其子View尺寸大小时被调用。

5onSizeChanged()

该方法在Measure方法之后且测量大小与之前不一样的时候被调用。

6onLayout()

该方法在当前View需要为其子View分配尺寸和位置时会被调用。

7onDraw(Canvas) 

该方法用于View渲染内容的细节。 

8onWindowFocusChanged()

该方法也可能在绘制过程中被调用,具体是在包含当前ViewWindow获得或失去焦点时被调用。此时可以设置代码中定义的View的一些LayoutParameter

如果View进入了销毁阶段,肯定是会被调用的。

9onWindowVisibilityChanged()

该方法同上,具体是在包含当前ViewWindow可见性改变时被调用。

10onDetachedFromWindow() 

View离开附着的窗口时触发,比如在Activity调用onDestroy方法时View就会离开窗口。和一开始的AttachedToWindow相对,都只会被调用一次

 

因此可以总结为:

1)在ActivityonCreate方法中加载ViewViewonFinishInflate会被调用,继而Activity的生命周期执行到onResume方法之后View才被附着到窗口上,继而进行绘制工作,onMeasureonSizeChanged onLayoutonDraw。这几个方法可能由于setVisibleonResume被调用多次,最后是Window失去焦点后的销毁阶段。

2onVisibilityChanged()方法在View是可见状态时如上所示时机调用,但是View的状态如果是不可见或者GONE时,是首先被调用的。如果是Invisible状态,View的创建到layout即结束,不会绘制出来。如果是GONE状态,View也会被加载并添加到Window,但是不会再MeasureLayoutDraw了。也就时说即使是GONE状态,销毁时一样有Detach的过程,View的销毁过程和可见性无关

 

2View其他的一些生命周期相关方法

onFocusChanged()

该方法在当前View获得或失去焦点时被调用。

onKeyDown()

该方法在有按键按下后被调用。

onKeyUp()

与上面对应,该方法在有按键按下后弹起时触发。  

onTrackballEvent()

该方法在一个轨迹球运动事件发生时被调用。  

onTouchEvent()

该方法在触屏事件发生时被调用。  

onSaveInstanceState()

这个方法就不用说了,在ActivityPause的时候被调用。被Pause后回到界面时View就没方法被调用了。只有在比如Activity被销毁时进入View的销毁流程。

  • 13
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值