Определите, когда приложение Android переходит в фоновый режим

В моем приложении мне нужно определить, переходит ли мое приложение в фоновый режим или переключается на другое действие того же приложения... Я знаю, что мне нужно использовать метод onPause... но как я могу различить два случая?


person Umar Jamil    schedule 02.12.2011    source источник


Ответы (2)


private static boolean isApplicationGoingToBackground(final Context context) {

        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<RunningTaskInfo> tasks = am.getRunningTasks(1);
        if (!tasks.isEmpty()) {
            ComponentName topActivity = tasks.get(0).topActivity;
            if (!topActivity.getPackageName().equals(context.getPackageName())) {
                return true;
            }
        }

        return false;
    }

ОБНОВЛЕНИЕ: было объявлено, что точность getRunningTasks не гарантируется.

Позвоните в onStop. onStop вызывается после onStart того, что захватывает экран — если это действие в том же пакете apk, то вы не переходите в фоновый режим. Для этого требуется разрешение GET_TASKS.

Или привяжите к службе onStart и отмените привязку onStop - тогда служба будет onDestroyed, когда все ваши действия будут остановлены (или отслеживайте привязки и развязки, если вы не хотите полагаться на вызов onDestroyed - потому что это может быть не так ..).

person FunkTheMonk    schedule 02.12.2011
comment
Наконец, я добавил глобальную переменную, для которой установлено значение «true» при запуске Intent и значение «false» при отображении нового представления. Таким образом, когда вызывается onPause, а глобальная переменная неверна, это просто означает, что представление переходит в фоновый режим из-за воли Android: D - person Umar Jamil; 15.12.2011

Не существует прямого способа получить статус приложения в фоновом или переднем плане, но даже я столкнулся с этой проблемой и нашел решение с помощью onWindowFocusChanged и onStop. Дополнительные сведения: http://vardhan-justlikethat.blogspot.in/2013/05/android-solution-to-detect-when-android.html

person harsha    schedule 31.05.2013