В моем приложении мне нужно определить, переходит ли мое приложение в фоновый режим или переключается на другое действие того же приложения... Я знаю, что мне нужно использовать метод onPause... но как я могу различить два случая?
Определите, когда приложение Android переходит в фоновый режим
Ответы (2)
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 и отмените привязку onStop - тогда служба будет onDestroyed, когда все ваши действия будут остановлены (или отслеживайте привязки и развязки, если вы не хотите полагаться на вызов onDestroyed - потому что это может быть не так ..).
Не существует прямого способа получить статус приложения в фоновом или переднем плане, но даже я столкнулся с этой проблемой и нашел решение с помощью onWindowFocusChanged и onStop. Дополнительные сведения: http://vardhan-justlikethat.blogspot.in/2013/05/android-solution-to-detect-when-android.html