Dialog 生命周期

Dialog 生命周期主要包含以下几个方法:

show
onCreate
onStart
onAttachedToWindow
cancel
dismiss
onDetachedFromWindow
onStop

在创建并 show 时,调用:

show
onCreate
onStart
onAttachedToWindow

在 dismiss 时,调用:

cancel
dismiss
onDetachedFromWindow
onStop

对于已经创建后,再次 show 的 dialog,回调:

show
onStart
onAttachedToWindow

与创建时相比,少调用了一个 onCreate 方法。

再次 dimiss 时,回调的方法和之前一样:

cancel
dismiss
onDetachedFromWindow
onStop

需要注意的是,Dialog 所在的 Activity onStart、onResume、onPause、onStop 时,Dialog 的生命周期不会被回调。只有当 Dialog 所在的 Activity onDestroy 的时候,Dialog 的 onDetachedFromWindow 方法会被回调。

测试代码:

class MyDialog(context: Context) : AlertDialog(context) {
    
    override fun show() {
        Log.d("~~~", "show")
        super.show()
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        Log.d("~~~", "onCreate")
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

    }

    override fun onStart() {
        Log.d("~~~", "onStart")
        super.onStart()
    }

    override fun onAttachedToWindow() {
        Log.d("~~~", "onAttachedToWindow")
        super.onAttachedToWindow()
    }

    override fun cancel() {
        Log.d("~~~", "cancel")
        super.cancel()
    }

    override fun dismiss() {
        Log.d("~~~", "dismiss")
        super.dismiss()
    }

    override fun onDetachedFromWindow() {
        Log.d("~~~", "onDetachedFromWindow")
        super.onDetachedFromWindow()
    }

    override fun onStop() {
        Log.d("~~~", "onStop")
        super.onStop()
    }

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

推荐阅读更多精彩内容