Я ищу, как узнать, находится ли мое приложение на переднем плане или на заднем плане. Я видел два возможных решения, но я не уверен, какой из них лучше (если есть лучший).Лучший способ проверить, находится ли приложение на переднем плане
Решение 1: На моем классе приложения создать два счетчика:
private int mResumedActivities = 0;
private int mPausedActivities = 0;
и увеличивает каждый счетчик на каждом onResume/OnPause, так что я мог бы проверить, если приложение находится в фоновом режиме, как:
public boolean isInBackground() {
return mPausedActivities >= mResumedActivities;
}
Решение 2: Создайте два булева элемента в моем классе приложения: private boolean isAppResumed = false; private boolean isAppInForeground = false;
и на каждом onResume/OnPause обновить isAppResumed и на каждом onResume установить isAppInForeground и на каждом onPaused вызвать обработчик с задержкой так, если через несколько миллисекунд, приложение по-прежнему приостановленным, а затем обновить isAppInForeground к истинным ,
Я думаю, что первое решение проще, но мне не нравится иметь два счетчика, которые могут быть навсегда увеличены. Кроме того, сначала будет вызываться onPause, а затем onResume, поэтому будет несколько миллисекунд, что приложение может подумать, что это на переднем плане, когда на самом деле нет. Как вы думаете?
Спасибо заранее!
Итак, где именно вам нужно это значение? Обычно, как нормальный разработчик делает это, в зависимости от того, какая активность/фрагмент он хочет знать, находится ли приложение на переднем плане, он вводит новую переменную фрагмента/активности, называемую isAcitivtyForeground или isFragmentForeground, и устанавливает ее значение false в onPause и true в onResume – Bhargav
Возможный дубликат [проверить приложение Android на переднем плане или нет?] (http://stackoverflow.com/questions/8489993/check-android-application-is-in-foreground- or-not) – Strider
Я хочу проверить его из другой службы или singleton, полностью независимый от фрагмента/активности. – FVod