更新
onVisibilityChanged(手机系统低于7.0)
- 触发时机:当一个视图的可见性发生变化时,该方法会被调用。
- 作用范围:该方法用于处理单个视图自身的可见性变化。当一个视图的可见性发生变化时,系统会直接调用该视图的 onVisibilityChanged() 方法。
@Override
protected void onVisibilityChanged(@NonNull View changedView, int visibility) {
super.onVisibilityChanged(changedView, visibility);
if (visibility == View.VISIBLE) {
//onResume() 被调用
//处理动画播放、线程启动、开启定时任务等操作
} else {
// onPause() 被调用
//处理动画的暂停、取消或者线程的暂停、取消、定时任务的暂停、取消等
}
}
onVisibilityAggregated(手机系统高于7.0)
- 触发时机:当一个视图的可见性发生变化,并且这个变化已经在整个视图层次结构中进行了聚合处理时,该方法会被调用。
- 作用范围:该方法主要用于处理视图在整个层次结构中的可见性变化。当一个视图的可见性发生变化时,系统会自动遍历整个层次结构,将所有可见性变化进行聚合和处理,然后调用每个视图的 onVisibilityAggregated() 方法。
@Override
public void onVisibilityAggregated(boolean isVisible) {
super.onVisibilityAggregated(isVisible);
if (isVisible) {
//onResume() 被调用
//处理动画播放、线程启动、开启定时任务等操作
} else {
// onPause() 被调用
//处理动画的暂停、取消或者线程的暂停、取消、定时任务的暂停、取消等
}
}
销毁
onDetachedFromWindow执行销毁时资源的释放
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
// onDestory调用
}