Обнаружение, когда приложение Android of Backrgound
-
27-10-2019 - |
Вопрос
В моем приложении мне нужно обнаружить, будет ли мое приложение на фоновое время или переключается на другое действие того же приложения ... Я знаю, что мне нужно использовать метод 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 вызывается после того, как все, что берет на себя экран - если это действие в том же пакете APK, то вы не попадете в фон. Это требует разрешения get_tasks.
Или привязан к сервису ONSTART & BUSIND ONSTOP - служба будет затем Ondestroyed, когда все ваши действия будут остановлены (или Track Binds vs Unbinds, если вы не хотите полагаться на то, что он будет вызван - потому что это не может ..).
Другие советы
Не существует прямого подхода к получению статуса приложения на фоне или на переднем плане, но даже я столкнулся с этой проблемой, и нашел решение с OnWindowFocuschange и OnStop. Больше подробностей: http://vardhan-justlikethat.blogspot.in/2013/05/android-solution-todect-wne-android.html