Android dialog实现监听生命周期
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android dialog实现监听生命周期相关的知识,希望对你有一定的参考价值。
参考技术AViewModel:
(上述仅写出了onDestroy,也可以加入其它生命周期事件监听)
自定义Dialog:
判定当前activity为AppCompatActivity,进行生命周期监听
但是问题是:并没有在①处监听到回调。
LiveData无法回传生命周期对象?
查看observe源码:
看到这里明白了,当Activity的状态时销毁根本就不会传数据出来。
那应该如何回传出来?
很简单,不使用LiveData的方式,而是给MyViewModel设置监听回调即可。
到这里,回到问题: Dialog如何监听生命周期?
android 生命周期
在activity刚开始被创建的时候
当弹出一个dialog的时候,生命周期没有任何变化,仍然和之前相同,因为该dialog属于该activity
当跳到其他界面的时候,触发了onPause和onStop
再次跳转回刚才界面的时候,会触发onStart,onResume,和onPostResume
当按下主页键的时候,触发onPause和onStop,所走的生命周期和跳转到其他界面相同,本质也相同
销毁该界面的时候,所走的生命周期为onPause,onStop,onDestroy,比之前多调用了onDestroy.
onstop和onPause的区别:
当一个普通的dialog被创建时,双方都不会被调用
当一个activity dialog被创建时,onpause被调用,onstop不会被调用
onpause时,当activity部分不可见时,就会被触发
onstop是activity完全不可见时会被触发,如果新activity的主题为透明时,onstop不会被调用
onstart和onrestart的区别:
当activity被创建时,只会调用onstart不会调用onrestart.
每次activity从不可见变为可见时,都会调用onstart.
onstart可以理解为和onstop成双成对的出现
cp关系
onstart-onstop
onresume-onpause
异常情况下的生命周期
onsaveInstanceState是只有在异常情况下才会被调用,例如旋转屏幕,原activity就会被销毁,并且会调用onsaveInstanceState
以上是关于Android dialog实现监听生命周期的主要内容,如果未能解决你的问题,请参考以下文章
Android Gradle 插件Gradle 构建机制 ④ ( Gradle 构建生命周期 | 初始阶段 | 配置阶段 | 执行阶段 )
Android Gradle 插件Gradle 构建生命周期 ② ( Gradle 类的添加构建生命周期监听器函数 | Gradle#addListener 函数 )