Detectar quando o aplicativo Android entrar em segundo plano
-
27-10-2019 - |
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!
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