我有一个程序,如果应用程序没有运行,它会创建一个通知。为此,我使用了以下代码:
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的建议。它有点笨拙,但效果很好。
答案 0 :(得分:0)
我不相信有办法,但我可能错了。但是,我认为检测通知阴影何时停止是错误的方式来实现你想要的。
您应该通过Activity#onResume
和Activity#onPause
跟踪您的活动是否属于活动状态。比如,如果调用onResume
,则在某处设置一个标志,并在调用onPause
时重置它。如果设置了标志,则表示您的活动已打开,因此请勿发送通知。