Привет, мое приложение имеет 3 действия, одним из которых является диалог. Я сделал это, используя этот код в AndroidManifest.xml
android:theme="@android:style/Theme.Dialog"
приложение также имеет службу, которая может открыть диалог, даже если приложение не отображается, однако когда оно это делает, оно также открывает одно из других действий в фоновом режиме. Есть ли способ остановить это, чтобы он открыл диалог перед текущей деятельностью (даже если это действие из другого приложения)?
Спасибо, ng93
i закончил закрытие всех моих приложений, прежде чем открывать активность диалога, а не идеально, но, похоже, единственный способ получить функциональность im после
Я решил это, добавив:
android:taskAffinity=".MyDialog"
в мой диалог в AndroidManifest.xml. Тогда это не связано с вашими другими задачами и может быть показано без привлечения приостановленной активности.
Вы не можете отобразить что-то перед другой деятельностью приложения. "впереди" несколько неоднозначно, поэтому я поясню, что ваше приложение не может одновременно совместно использовать экран с другим приложением.
Как я понимаю, дизайн Android по своей сути требует, чтобы при выполнении чего-то на экране процесс/задача приложения находились на переднем плане и в фокусе, тем самым фокусируя другие действия для этой задачи. Это означает, что другие приложения не работают с фокусом пользовательского интерфейса, когда ваше приложение находится в фокусе.
Это означает, что, например, когда ваше приложение запускает действие, оно сфокусирует стек приложений в приложении и добавляет новую активность (в данном случае, ваше диалоговое окно) поверх стека приложений. В результате, если вы нажмете "назад" во время отображения диалогового окна, вы вернетесь к активности, которая была ранее показана. Если стек очищен от предыдущих действий, "назад" приведет вас к приложению, которое ранее отображалось на экране.
Существуют способы очистки стека, такие как: http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP
В зависимости от вашего сценария вы можете очистить стек или выйти из приложения, когда пользователь закроет диалоговое окно. Кроме того, активность диалога может переопределить onBackPressed, так что если пользователь ударит "назад" , действие "завершает" ваше приложение, возвращая пользователя к тому, что они делали перед диалогом.
Дальнейшее чтение для действий и стеков: http://developer.android.com/guide/topics/fundamentals.html#acttask