У меня есть программа, которая создает уведомление, если приложение не запущено.Для этого я использовал следующий код:
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.Это немного неуклюже, но работает отлично.