2

在我的应用程序中,我需要检测我的应用程序是进入后台还是切换到同一应用程序的另一个活动...我知道我必须使用 onPause 方法...但是如何区分这两种情况?

4

2 回答 2

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

更新:已声明 getRunningTasks 不能保证准确。

呼叫 onStop。onStop 在任何接管屏幕的 onStart 之后被调用 - 如果它是同一个 apk 包中的一个活动,那么你就不会进入后台。这确实需要 GET_TASKS 权限。

或绑定到服务 onStart & unbind onStop - 当您的所有活动都停止时,该服务将被 onDestroyed(或者如果您不想依赖 onDestroyed 被调用,则跟踪绑定与取消绑定 - 因为它可能不会......)。

于 2011-12-02T15:04:26.563 回答
0

没有直接的方法可以在后台或前台获取应用程序状态,但即使我也遇到过这个问题,并通过 onWindowFocusChanged 和 onStop 找到了解决方案。更多详情:http: //vardhan-justlikethat.blogspot.in/2013/05/android-solution-to-detect-when-android.html

于 2013-05-31T17:50:41.630 回答