在我的应用程序中,我需要检测我的应用程序是要在后台运行还是要切换到同一应用程序的另一个活动…我知道我必须使用onPause方法…但是如何区分这两种情况?
谢谢!
解决方法:
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来调用,则跟踪绑定与取消绑定-因为可能不会.).