Android自定义view生命周期

定义一个自定义CustomView,在xml中加载,打印MainActivity和view各个生命周期方法,对比如图显示

自定义view的生命周期过程主要分为三个环节,初始准备,监测绘制,销毁

如图所示,一开始view在xml中加载,调用构造函数CustomView(Context contextt, AttributeSet attrs),当从xml中加载完成后,调用onFinishInflate 方法,这时view完成初始准备环节。

view的绘制发生在activity onResume之后,确切来说是在onAttachedToWindow之后,onAttachedToWindow是将view绑定到activity所在window,附加到window后,程序开始进行所有view的绘制。

p.s.如果view中需要注册监听,开始执行某动画效果,可以在onAttachedToWindow中开始调用执行。

我们都知道自定义view绘制当中最重要的有三个方法,onMeasure onLayout onDraw

onMeasure 计算view高度宽度大小

onLayout 计算view位置

onDraw 绘制view

view绘制过程中为了确认view大小,会多次重复调用onMeasure。这跟view绘制机制有关,有兴趣可以去官网了解How Android Draws Views

onWindowFocusChanged是判断view是否获取焦点,参数hasWindowFocus 对应返回true 和false 可以用该方法判断view进出后台

onDetachedFromWindow当activity销毁之后,view会从window上抽离,此时view销毁。

附上view生命周期简图

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,132评论 25 708
  • 水上跳跃着天空的月亮。真的是人生何世,会有这样的好景况。——《呼兰河传》 中元节前,盼了好久,临了那天,却诸事皆忘...
    洗溪星辰阅读 587评论 0 1
  • 1.你有拖延的习惯吗? 前几天晚上十点多,收到朋友发来的一条微信: 还有五天就要参加在职研究生学期期末考试了,考试...
    张小芋阅读 809评论 14 21
  • from:与阿佑聊天记录整理。 阿佑:罗西……我一直也不懂…… 我:他是个目标明确的男人,但是他这个人很难懂。他对...
    项竹阅读 707评论 0 1