Вопрос

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

Благодарю вас!

Это было полезно?

Решение

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 вызывается после того, как все, что берет на себя экран - если это действие в том же пакете APK, то вы не попадете в фон. Это требует разрешения get_tasks.

Или привязан к сервису ONSTART & BUSIND ONSTOP - служба будет затем Ondestroyed, когда все ваши действия будут остановлены (или Track Binds vs Unbinds, если вы не хотите полагаться на то, что он будет вызван - потому что это не может ..).

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top