Détecter quand android app fond go
-
27-10-2019 - |
Question
Dans ma demande, je dois détecter si ma demande va fond ou passer à une autre activité de la même application ... Je sais que je dois utiliser la méthode OnPause ... mais comment puis-je distinguer les deux cas?
Merci!
La solution
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;
}
Mise à jour:. GetRunningTasks a été déclaré ne pas être garantie d'être précis
Appel à onStop. onStop est appelé après onStart de tout ce qui prend tout l'écran - si son une activité dans le même paquet apk alors vous n'êtes pas d'entrer dans l'arrière-plan. Cela ne nécessite l'autorisation de GET_TASKS.
Ou se lient à un service onStart & unbind onStop - le service sera alors onDestroyed lorsque toutes vos activités sont arrêtées (ou piste se fixe vs délie si vous ne voulez pas compter sur onDestroyed se dit - parce qu'il ne pourrait pas .. ).
Autres conseils
Il n'y a pas d'approche directe pour obtenir l'état de l'application en arrière-plan ou au premier plan, mais même moi-même avons fait face à ce problème, et a trouvé la solution avec onWindowFocusChanged et onStop. Pour plus de détails: http: // vardhan -justlikethat.blogspot.in/2013/05/android-solution-to-detect-when-android.html