我需要知道系统/通知栏什么时候在我的应用程序中打开,我找不到任何真正的解决方案,所以我一起破解了一些似乎工作得很好的东西. 在介绍实现之前,我将简要介绍一下我的(非常hacky
          您将需要一个父活动,您的应用程序中的所有活动都会扩展.在此父Activity中,添加此静态成员:
private static boolean wasOnStopCalledAfterOnWindowFocusChanged;
然后在你的onStop()方法中添加这一行,确保你在super.onStop()之前调用它
@Override
protected void onStop() {
    wasOnStopCalledAfterOnWindowFocusChanged = true;
    super.onStop();
} 
 最后,您需要覆盖此父Activity中的onWindowFocusChanged(..),并添加以下逻辑.
@Override
public 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);
    }
}
        
             