Android View 生命周期你真的知道吗

View生命周期

1.创建

View view = new View(Context);

这只是创建了一个视图,如果需要使用它,就需要添加到Window上

2.绑定Window

viewgroup.addView(view);

View添加到Window时就会出发dispatchAttachedToWindow方法
其中View自身会触发onAttachedToWindow(),如果设置了OnAttachStateChangeListener监听,监听将会触发onViewAttachedToWindow(View view)。如果不是GONE,就会触发onWindowVisibilityChanged(int visibility),但无论如何都会触发onVisibilityChanged(View view, int visibility)

如果时ViewGroup 首先调用父类的(最终也就是View的)dispatchAttachedToWindow,然后调用子ViewdispatchAttachedToWindow()方法。

3.解绑Window

viewgroup.remove(view);

ViewWindow移除时,触发dispatchDetachedFromWindow方法,如果View不是GONE,先onWindowVisibilityChanged(GONE)。接着调用onDetachedFromWindow(),如果设置了OnAttachStateChangeListener监听,监听将会触发onViewDetachedFromWindow(View view)

如果时ViewGroup先调用子View的dispatchDetachedFromWindow()方法,再调用父类的(最终也就是View的)dispatchDetachedFromWindow()方法。

在这里插入图片描述

4.如何利用View的生命周期处理相关事情

了解View的生命周期其实是为了更好地处理相关的事情。
在自定义View的时候如果View内部有异步操作类似于RxJava或者Handler等,我们需要重写onDetachedFromWindow() 这个方法在View被移出屏幕Window时被调用,此时一般都需要取消异步操作,需要在此方法中执行相关取消的代码。如果需要在View外部操作类似逻辑,只需要View.addAttachStateChangeListener()listener的对应方法里去执行相关操作。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值