FloatingX icon indicating copy to clipboard operation
FloatingX copied to clipboard

App级别浮窗在多个Activity之间显示和隐藏会有问题

Open gumaola opened this issue 2 months ago • 8 comments

Android SDK Version = v2.0.6 具体操作为: 1.启动APP,在Activity A调用FloatingX.install().show()显示一个浮窗。 2.跳转至Activity B,此时浮窗可以正常显示。 3.返回Activity A,调用FloatingX.control(FLOAT_TAG).hide()隐藏浮窗 4.再次跳转至Activity B,此时浮窗也是处于隐藏状态。 5.然后在Activity B调用FloatingX.control(FLOAT_TAG).show(),这时浮窗无法正常显示,但是返回Activity A时,发现浮窗可以正常显示。

跟踪源代码发现,错误是发生在这一步: image 在Activity B中的containerGroupView依旧是Activity A的DecorView,所以实际是添加在Activity A上显示,而B页面无法及时显示。

gumaola avatar Apr 19 '24 06:04 gumaola

Android SDK Version = v2.0.6 具体操作为: 1.启动APP,在Activity A调用FloatingX.install().show()显示一个浮窗。 2.跳转至Activity B,此时浮窗可以正常显示。 3.返回Activity A,调用FloatingX.control(FLOAT_TAG).hide()隐藏浮窗 4.再次跳转至Activity B,此时浮窗也是处于隐藏状态。 5.然后在Activity B调用FloatingX.control(FLOAT_TAG).show(),这时浮窗无法正常显示,但是返回Activity A时,发现浮窗可以正常显示。

跟踪源代码发现,错误是发生在这一步: image 在Activity B中的containerGroupView依旧是Activity A的DecorView,所以实际是添加在Activity A上显示,而B页面无法及时显示。

B Activity - show()展示时机是onResume之前吗,如果是的话那不行,目前浮窗的插入时机监控是在onResume里做的

Petterpx avatar Apr 19 '24 08:04 Petterpx

Android SDK Version = v2.0.6 具体操作为: 1.启动APP,在Activity A调用FloatingX.install().show()显示一个浮窗。 2.跳转至Activity B,此时浮窗可以正常显示。 3.返回Activity A,调用FloatingX.control(FLOAT_TAG).hide()隐藏浮窗 4.再次跳转至Activity B,此时浮窗也是处于隐藏状态。 5.然后在Activity B调用FloatingX.control(FLOAT_TAG).show(),这时浮窗无法正常显示,但是返回Activity A时,发现浮窗可以正常显示。 跟踪源代码发现,错误是发生在这一步: image 在Activity B中的containerGroupView依旧是Activity A的DecorView,所以实际是添加在Activity A上显示,而B页面无法及时显示。

B Activity - show()展示时机是onResume之前吗,如果是的话那不行,目前浮窗的插入时机监控是在onResume里做的

是在OnResume中做的 image

gumaola avatar Apr 22 '24 03:04 gumaola

在测试工程Sample app中也可以复现此问题: 1.针对浮窗1,不给予权限,降级为app层级浮窗。 2.首页点击“隐藏全局悬浮窗”,此时浮窗1被隐藏 3.首页点击“进入测试页面”->点击“进入多浮窗页面”->点击“显示全局悬浮窗(tag1)”,此时浮窗1依旧无法显示,仅当返回上一页后才会显示浮窗1

gumaola avatar Apr 22 '24 08:04 gumaola

在测试工程Sample app中也可以复现此问题: 1.针对浮窗1,不给予权限,降级为app层级浮窗。 2.首页点击“隐藏全局悬浮窗”,此时浮窗1被隐藏 3.首页点击“进入测试页面”->点击“进入多浮窗页面”->点击“显示全局悬浮窗(tag1)”,此时浮窗1依旧无法显示,仅当返回上一页后才会显示浮窗1

感谢反馈,已修复,请更新到2.0.7即可

Petterpx avatar Apr 22 '24 15:04 Petterpx

在测试工程Sample app中也可以复现此问题: 1.针对浮窗1,不给予权限,降级为app层级浮窗。 2.首页点击“隐藏全局悬浮窗”,此时浮窗1被隐藏 3.首页点击“进入测试页面”->点击“进入多浮窗页面”->点击“显示全局悬浮窗(tag1)”,此时浮窗1依旧无法显示,仅当返回上一页后才会显示浮窗1

感谢反馈,已修复,请更新到2.0.7即可

感谢您的修正,从我的设备上看,上述不显示的问题已经得到修正。不过我又发现一个新的问题(版本2.0.7)。

同样可以在Sample上重现: 1.针对浮窗1,不给予权限,降级为app层级浮窗。 2.首页点击“隐藏全局悬浮窗”,此时浮窗1被隐藏 3.首页点击“进入测试页面”->点击“进入黑名单页面”->点击“显示全局悬浮窗”。此时悬浮窗不会被显示,没有问题。 4.点击返回键,返回首页。点击“显示全局悬浮窗”,此时悬浮窗无法显示

根据代码,发现错误原因是在: image

此时fxView不知道何时已经呗attach到MainActivity的DecorView中了,所以走不到下一步。

gumaola avatar Apr 23 '24 05:04 gumaola

在测试工程Sample app中也可以复现此问题: 1.针对浮窗1,不给予权限,降级为app层级浮窗。 2.首页点击“隐藏全局悬浮窗”,此时浮窗1被隐藏 3.首页点击“进入测试页面”->点击“进入多浮窗页面”->点击“显示全局悬浮窗(tag1)”,此时浮窗1依旧无法显示,仅当返回上一页后才会显示浮窗1

感谢反馈,已修复,请更新到2.0.7即可

感谢您的修正,从我的设备上看,上述不显示的问题已经得到修正。不过我又发现一个新的问题(版本2.0.7)。

同样可以在Sample上重现: 1.针对浮窗1,不给予权限,降级为app层级浮窗。 2.首页点击“隐藏全局悬浮窗”,此时浮窗1被隐藏 3.首页点击“进入测试页面”->点击“进入黑名单页面”->点击“显示全局悬浮窗”。此时悬浮窗不会被显示,没有问题。 4.点击返回键,返回首页。点击“显示全局悬浮窗”,此时悬浮窗无法显示

根据代码,发现错误原因是在: image

此时fxView不知道何时已经呗attach到MainActivity的DecorView中了,所以走不到下一步。

这是一个比较复杂的流程问题,得debug一会,大概知道原因是因为fx的状态监测异常导致

Petterpx avatar Apr 23 '24 12:04 Petterpx

感谢,我个人暂时的解决办法就是修改了show()函数逻辑 image

gumaola avatar Apr 24 '24 05:04 gumaola

感谢,我个人暂时的解决办法就是修改了show()函数逻辑 image

是的,这里可以兜底,但主要问题原因不是在show()方法,可以先这样处理

Petterpx avatar Apr 24 '24 06:04 Petterpx

感谢,我个人暂时的解决办法就是修改了show()函数逻辑 image

是的,这里可以兜底,但主要问题原因不是在show()方法,可以先这样处理

抱歉久等了,更新到2.1.0即可修复此问题

Petterpx avatar May 05 '24 11:05 Petterpx