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!

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top