android – 如何检测通知系统栏何时打开

android – 如何检测通知系统栏何时打开,第1张

概述我需要知道系统/通知栏什么时候在我的应用程序中打开,我找不到任何真正的解决方案,所以我一起破解了一些似乎工作得很好的东西. 在介绍实现之前,我将简要介绍一下我的(非常hacky)逻辑.当用户因任何原因不再可见Activity时,将调用onWindowFocusChanged(..).但是,仅当用户通过转到后台才能看到“活动”时,才会调用onStop().我注意到在切换活动时,总是在onWindow 我需要知道系统/通知栏什么时候在我的应用程序中打开,我找不到任何真正的解决方案,所以我一起破解了一些似乎工作得很好的东西.解决方法 在介绍实现之前,我将简要介绍一下我的(非常Hacky)逻辑.当用户因任何原因不再可见Activity时,将调用onWindowFocusChanged(..).但是,仅当用户通过转到后台才能看到“活动”时,才会调用onStop().我注意到在切换活动时,总是在onWindowFocusChanged(..)之后调用onStop(),所以我在onWindowFocusChanged(..)中添加了一个检查以查看是否已经调用了onStop()(延迟时间为1秒),并且我使用静态成员做到了这一点.现在为了方法…… @H_403_11@

@H_403_11@您将需要一个父活动,您的应用程序中的所有活动都会扩展.在此父Activity中,添加此静态成员:

@H_403_11@

private static boolean wasOnStopCalledAfterOnWindowFocusChanged;
@H_403_11@然后在你的onStop()方法中添加这一行,确保你在super.onStop()之前调用它

@H_403_11@

@OverrIDeprotected voID onStop() {    wasOnStopCalledAfterOnWindowFocusChanged = true;    super.onStop();}
@H_403_11@最后,您需要覆盖此父Activity中的onWindowFocusChanged(..),并添加以下逻辑.

@H_403_11@

@OverrIDepublic voID onWindowFocusChanged(boolean hasFocus) {    if (!hasFocus) {        new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {            @OverrIDe            public voID run() {                if (!wasOnStopCalledAfterOnWindowFocusChanged) {                    // NOTIFICATION bar IS DOWN...DO STUFF                }                wasOnStopCalledAfterOnWindowFocusChanged = false;            }        },1000);    }}
总结

以上是内存溢出为你收集整理的android – 如何检测通知/系统栏何时打开全部内容,希望文章能够帮你解决android – 如何检测通知/系统栏何时打开所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1121459.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存