如何判断android中的通知阴影是否被拉下来

时间:2010-07-01 20:31:29

标签: android notifications visible

我有一个程序,如果应用程序没有运行,它会创建一个通知。为此,我使用了以下代码:

public void onWindowFocusChanged(boolean focus)
{
    inFocus = focus;

    if (inFocus)
    {//If this activity is in focus, fills data and clears notifications
        fillData();
        Notify.clear();
    }
    else
    {
        if (!RespondScreen.inFocus && !ClearDialog.inFocus)
        {
            Creates a notification
        }
    }
}

除非通知阴影被拉下,否则此工作正常。这会导致活动无法聚焦,并且由于其他两个活动都没有聚焦,因此会创建通知。一旦阴影被拉回,该通知就会被破坏,但它会给用户带来烦人的,不必要的干扰。是否有一些设置我可以用来测试通知阴影是否是焦点,或完全是另一种方式?

编辑:使用Qberticus的建议,我找到了一个可行的解决方案:

    public void onWindowFocusChanged(boolean focus)
{
    if (focus)
    {//If this activity is in focus, fills data and clears notifications
        inFocus = focus;
        fillData();
        Notify.clear();
    }
}

@Override
public void onPause()
{
    super.onPause();
    inFocus = false;
    Handler handler = new Handler();  
    handler.postDelayed(new Runnable() {  
         public void run() {  
             if (!RespondScreen.inFocus && !ClearDialog.inFocus)
             {
                Intent notifier = new Intent();
                notifier.setAction("itp.uts.program.NOTIFY");
                Bundle bundle = new Bundle();
                bundle.putBoolean("StartNotify", true);
                bundle.putBoolean("StartSound", false);
                notifier.putExtras(bundle);
                getApplicationContext().startService(new Intent(notifier));
             }
         }  
    }, 200);   
}

onResume方法由于某种原因不能使用Notify.clear(),所以我结合了我的尝试和Qberticus的建议。它有点笨拙,但效果很好。

1 个答案:

答案 0 :(得分:0)

我不相信有办法,但我可能错了。但是,我认为检测通知阴影何时停止是错误的方式来实现你想要的。

您应该通过Activity#onResumeActivity#onPause跟踪您的活动是否属于活动状态。比如,如果调用onResume,则在某处设置一个标志,并在调用onPause时重置它。如果设置了标志,则表示您的活动已打开,因此请勿发送通知。