一 :生命周期一共 6个
onCreate(),show(),onStart() ,cancel(),onDismiss(),Stop() 。
二 生命周期调用场景:
2-1 只new dialog() 没调show方法 不走生命周期 只走自定义dialog的构造方法
2-2 new Dialog() 调研首次调show()

2-3 调dismiss()

2-4 非首次调show() 就不会走onCreat()

2-5 按back 或者 dialog 以外可消失:

总结: 1onCreat() 只有首次调用show() 才会走
2 onStart()和 show() 在每次Dialog显示时都会依次执行。
3stop() 和 onDismiss() 在每次Dialog消失的时候都会依次执行。
4cancel() 是在点击BACK按钮或者Dialog外部时触发,依次执行stop() onDismiss() cancel() 。
注意:1 当自定义dialog 再使用的时候 只 new 了dialog 而没有调用show()方法 此时不走任何生命周期,只走dialog的构造函数
应用场景:延时show(),但是想先拿到view【解决没调show findViewById 为null】 可以将setContentView() 放在构造函数里,而不是放在onCreat()里 因为不会走
public LocationPermissionGuideDialog(Context context, int theme) {
super(context, theme);
mContext = context;
setContentView(R.layout.dialog_home_location);
}
这样获取到的view 就不会为null
本文详细解析了Android Dialog的生命周期,包括onCreate(), onStart(), onDismiss(), cancel()等方法的调用场景。首次调用show()时会执行onCreate(),而每次显示和隐藏Dialog时,onStart()和onDismiss()会被依次执行。点击BACK键或Dialog外部时,会触发cancel(),依次执行stop(), onDismiss(), cancel()。此外,还提到了在Dialog构造函数中设置ContentView以避免未调用show()时找不到View的问题。
5421

被折叠的 条评论
为什么被折叠?



