Pergunta

Em meu aplicativo, preciso detectar se meu aplicativo está indo para segundo plano ou mudando para outra atividade do mesmo aplicativo ... Eu sei que tenho que usar o método onPause ... mas como posso distinguir os doiscasos?

Obrigado!

Foi útil?

Solução

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;
    }

ATUALIZAÇÃO: getRunningTasks foi declarado como não tendo a garantia de ser preciso.

Ligue para a onStop.onStop é chamado após onStart de qualquer coisa que assuma o controle da tela - se for uma atividade no mesmo pacote apk, então você não está indo para o fundo.Isso requer a permissão GET_TASKS.

Ou vincule-se a um serviço onStart e desvincule-se onStop - o serviço será então onDestroyed quando todas as suas atividades forem interrompidas (ou vincula-se vs desvincula-se se você não quiser que onDestroyed seja chamado - porque pode não ..).

Outras dicas

Não há uma abordagem direta para obter o status do aplicativo em segundo ou primeiro plano, mas até eu enfrentei esse problema e encontrei a solução com onWindowFocusChanged e onStop.Para mais detalhes: http:// vardhan-justlikethat.blogspot.in/2013/05/android-solution-to-detect-when-android.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top