Frage

In meiner Anwendung muss ich feststellen, ob meine Anwendung in den Hintergrund geht oder zu einer anderen Aktivität derselben Anwendung wechselt ... Ich weiß, dass ich die OnPause -Methode verwenden muss ... aber wie kann ich die beiden Fälle unterscheiden?

Vielen Dank!

War es hilfreich?

Lösung

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

UPDATE: GetRunnttasks wurde als nicht garantiert erklärt.

Rufen Sie onStop an. OnStop wird nach dem Aufstart des Bildschirms angerufen - wenn es sich um eine Aktivität im selben APK -Paket handelt, dann gehen Sie nicht in den Hintergrund. Dies erfordert die Erlaubnis von GET_TASKS.

Oder binden Sie an einen Dienst auf Start & Unbind OnStop - der Service wird dann entdarmiert, wenn alle Ihre Aktivitäten gestoppt werden (oder Binds gegen Unbindungen, wenn Sie sich nicht darauf verlassen möchten, dass OneDestroyed angerufen wird - weil dies möglicherweise nicht der Fall ist.).

Andere Tipps

Es gibt keinen direkten Ansatz, um den App -Status während des Hintergrunds oder im Vordergrund zu erhalten, aber selbst ich habe mit diesem Problem konfrontiert und die Lösung mit Onwindowfocuschanged und OnStop gefunden. Für mehr Details: http://vardhan-justlikethat.blogspot.in/2013/05/android-solution-to-dect-when-android.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top