通过LifecycleObserver实现onWindowFocusChanged()的效果

问题描述 投票:0回答:1

我目前正在我的Android应用程序中使用

LifecycleObserver
,并且遇到了一个场景,我需要实现类似于
onWindowFocusChanged()
的效果。但是,由于
LifecycleObserver
没有提供与
onWindowFocusChanged()
的直接等效项,我不确定如何继续。

在我的具体情况下,当我的 Activity 获得焦点时,我尝试执行某些操作,例如显示窗口或处理相关的 UI 操作。但是,由于

LifecycleObserver
中缺乏适当的生命周期回调,我面临着困难。

有没有办法使用

onWindowFocusChanged()
达到与
LifecycleObserver
相同的效果?如果不是,我可以考虑哪些替代方案或解决方法来确保当活动获得焦点时触发我的操作?

任何见解或建议将不胜感激。谢谢您的协助!

由于 LifecycleObserver 不直接提供与 onWindowFocusChanged() 等效的方法,因此我尝试在 LifecycleObserver 实现的 onResume() 方法中执行某些与 UI 相关的操作,例如显示窗口。但是,这导致了“android.view.WindowManager$BadTokenException”异常,表明窗口令牌无效。

我期望 LifecycleObserver 的 onResume() 方法中执行的操作能够成功执行,不会遇到任何异常。但是,调用 onResume() 时,窗口似乎可能尚未完全准备好,从而导致 BadTokenException。

最终,我正在寻求有关如何确保当 Activity 获得焦点时可以可靠地触发 UI 相关操作的指导,无论是通过 LifecycleObserver 中的解决方法还是利用替代方法。

android
1个回答
0
投票

最后我通过以下方式实现了:

Activity.findViewById(android.R.id.content).post(...)
© www.soinside.com 2019 - 2024. All rights reserved.