Android dialog实现监听生命周期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android dialog实现监听生命周期相关的知识,希望对你有一定的参考价值。

参考技术A

ViewModel:

(上述仅写出了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 生命周期

Android Gradle 插件Gradle 构建机制 ④ ( Gradle 构建生命周期 | 初始阶段 | 配置阶段 | 执行阶段 )

Android Gradle 插件Gradle 构建生命周期 ② ( Gradle 类的添加构建生命周期监听器函数 | Gradle#addListener 函数 )

#yyds干货盘点#愚公系列2022年10月 微信小程序-应用生命周期和全局变量

监听Activity生命周期方式及案例讲解

Android活动生命周期 - 重新启动(销毁)应用程序不会删除对(自定义)监听器的引用?