Событие Android Need Foreground и Backgorund

Привет, друзья, я делаю приложение, в котором мне нужно что-то показать, когда пользователь переходит в фоновый режим, и снова, когда пользователь выходит на передний план. Поэтому мне нужно получить событие, когда наше приложение переходит в фоновый режим и снова, когда приложение выходит на передний план, работая в API выше 8.

Я пробовал все, но только смог узнать, находится ли мое приложение на переднем плане или нет. Мне нужно событие, когда мы снова выйдем в онлайн на уровне приложения.


person Love Garg    schedule 11.03.2014    source источник
comment
эта ссылка поможет вам работаю над моей проблемой...   -  person Love Garg    schedule 09.09.2014


Ответы (1)


Вы можете определить суперкласс для всех своих действий и отслеживать состояние приложения. Если все активности остановлены — приложение в фоновом режиме, иначе — на переднем плане. В методах onStart() и onStop() вашей суперактивности вы можете увеличивать и уменьшать количество видимых активностей. Затем в onStart() и onStop() проверьте, была ли в данный момент видимая активность. Если нет - приложение становится активным/неактивным, и вы можете вызвать свой метод:

public class SuperActivity extends Activity {
    private static int sVisibleActivitiesCount;

    @Override
    public void onStart(){
        super.onStart();
        if (SuperActivity.sVisibleActivitiesCount == 0) {
            onAppBecomesActive();
        }
        SuperActivity.sVisibleActivitiesCount++;
    }

    @Override
    public void onStop(){
        super.onStart();
        SuperActivity.sVisibleActivitiesCount--;
        if (SuperActivity.sVisibleActivitiesCount == 0) {
            onAppBecomesInactive();
        }
    }

    private void onAppBecomesActive() {
        // Do some staff
    }

    private void onAppBecomesInactive() {
        // Do some staff
    }
}

Второй подход заключается в использовании ActivityLifecycleCallbacks (мин. API 14) для Мониторинг жизненного цикла действий и отслеживание состояния приложения в одном месте без суперкласса для всех действий. Поэтому я бы предпочел использовать этот подход, если ваше приложение имеет minSdkVersion="14".

person makovkastar    schedule 11.03.2014
comment
также можно добавить логическое значение в пользовательскую реализацию Application и отредактировать его в onStart onStop с помощью getApplication() и кастинга. Так что не надо считать. - person MikeIsrael; 11.03.2014
comment
Спасибо за ваш ответ. Но мне нужно событие, только когда приложение становится передним и фоновым. Но твой подход изумителен @makovkastar - person Love Garg; 11.03.2014