UIAndroid_高级进阶

View的生命周期

2019-11-10  本文已影响0人  写代码的向日葵

很多做了三四年开发的Android开发者,对Activity、Fragment、View的生命周期都说不清楚,更不用提组件化了,现在就写写View的生命周期。

1. View的生命周期如下图所示

View生命周期.png

Android中的View有两种构造方法被调用的情况

  1. 在View创建时调用
  2. 在Layout文件加载时被调用。

2.View被加载时,根据参数会有三种情况。

(1). View在Visible(可见)时的调用
onAttachedToWindow ——> onMeasure ——> onSizeChanged ——> onLayout ——> onDraw

(2). View在Visible(不可见)时的调用
onAttachedToWindow ——> onMeasure ——> onSizeChanged ——> onLayout

(3). View在Gone(加载)时的调用
onAttachedToWindow


上面说了View的创建时间的生命周期过程,下面来看下View销毁时的生命周期的过程:

Activity和View的生命周期的关联情况如下图所示:


view和activity的生命周期的关联.png

(1). Activity在onCreate阶段会使用setContentView将xml布局文件的控件映射到Activity布局中。此时View会执行构造方法,完成初始化后回调onFinishInflate方法

(2).在调用生命周期onResume之后,View会相应调用onMeasure方法来测量自身大小,如果大小发生变化就继续调用onSizeChanged,接着通过onLayout计算放置在布局中的位置,之后调用onDraw来绘制界面,Activity会调用onWindowFocusChanged来改变焦点。

(3). onPause和onStop会触发onWindowFocusChanged,告知外界Activity已经失去焦点。

(4). 在Activity销毁调用onDestory时,View会从Activity解绑并调用onDetachedFromWindow.

(5). 异常回收Activity的情况下,保存状态时调用onSaveInstanceState,恢复时调用onRestoreInstaceState。View自身也存在这两个对应的函数,用来保存视图的状态。

(6).View也拥有onCconfigurationChang函数,用于触发视图配置变更,比如横竖屏切换操作。

上一篇下一篇

猜你喜欢

热点阅读