Определить, когда Android-приложение идет назад - PullRequest
2 голосов
/ 02 декабря 2011

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

Спасибо!

Ответы [ 2 ]

8 голосов
/ 02 декабря 2011
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, когда все ваши действия остановлены (или отследить связывание vs unbind, если вы не хотите полагаться на вызов onDestroyed - потому что это может не произойти .. ).

0 голосов
/ 31 мая 2013

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

...