Dialog样式Activity处理配置变更

在开发中,连续打开了几个Dialog样式的Activity之后,发现这些Activity居然都受配置变更(如折叠展开)的影响,也就是说这些Activity都会重启或者会回调onConfigurationChanged方法,这与以往的开发经验,只有顶部的Activity会重启有很大差别,这到底是为什么呢?

仔细观察发现,Dialog样式的Activity是浮在底部的Activity之上的,而底部的Activity也得受配置影响啊,不然底部的Activity由于部分可视,如果还是保持原样就会很突兀。观察到这个事实之后,自己写代码验证如下:
(以下ABCD均表示单个Activity,箭头表示startActivity
A Activity → B Dialog,配置变更时AB均重启,重启顺序为BA。
A Activity → B Dialog → C Dialog,配置变更时ABC均重启,重启顺序为CBA。
A Activity → B Activity → C Dialog → D Dialog,配置变更时BCD均重启,重启顺序为DCB。

经过验证,配置变更事件会一直传递至非Dialog样式的Activity为止,其实这也好理解,毕竟只要在屏幕上当前展示的Activity,都应该处理配置变更。至于底层的代码逻辑,无暇研究,交给看客了。

参考文档:
dialog样式的activity,可全屏、可任意大小的dialog实现-CSDN博客
处理配置变更  |  Android Developers

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值