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, когда все ваши действия остановлены (или отследить связывание vs unbind, если вы не хотите полагаться на вызов onDestroyed - потому что это может не произойти .. ).