当前位置: 代码迷 >> Android >> android View/ViewGroup 的生命周期小结笔记
  详细解决方案

android View/ViewGroup 的生命周期小结笔记

热度:187   发布时间:2016-04-27 23:24:54.0
android View/ViewGroup 的生命周期总结笔记

在写自定义控件的时候,如果不知道整个view的执行过程,那蒙圈是必须的。这篇文章只是个笔记,如果看不懂,欢迎喷水!!

这里写图片描述

1.首先,Activity onCreate并初始化view
2.然后,Activity onResume后调用view的onAttachedToWindow,因此常常在onAttachedToWindow方法中做初始化工作,比如注册一些广播、开始动画等等……
3.接下来,如果设置了背景则调用onDraw,之后倘若是viewgroup则调用dispatchDraw。
说明:dispatchDraw()主要是分发给子组件进行绘制,我们通常定制组件的时候重写的是onDraw()方法。值得注意的是ViewGroup容器组件的绘制,当它没有背景时直接调用的是dispatchDraw()方法, 而绕过了draw()方法,当它有背景的时候就调用draw()方法,而draw()方法里包含了dispatchDraw()方法的调用。因此要在ViewGroup上绘制东西的时候往往重写的是dispatchDraw()方法而不是onDraw()方法,或者自定制一个Drawable,重写它的draw(Canvas c)和 getIntrinsicWidth(),getIntrinsicHeight()方法,然后设为背景。
4.最后,当点击回退键时,Activity onDestroy后才调用onDetachedFromWindow,这时我们就在这个方法做一些收尾工作,如:取消广播注册、停止动画等等。
说明:onDraw与dispatchDraw将可能由于setVisible或onresume调用多次,而onAttachedToWindow与onDetachedFromWindow在创建与销毁view的过程中只会调用一次。

5.此外在创建期间还会多次调用onMeasure和onLayout。

viewgroup无背景时,viewgroup仅调用了dispatchDraw,不调用onDraw。

版权声明:本文为博主原创文章,转载请注明来自:http://blog.csdn.net/kimyo8337373/article/category/2608037

  相关解决方案