диалог Android, открывающий другой вид

1

Привет, мое приложение имеет 3 действия, одним из которых является диалог. Я сделал это, используя этот код в AndroidManifest.xml

android:theme="@android:style/Theme.Dialog"

приложение также имеет службу, которая может открыть диалог, даже если приложение не отображается, однако когда оно это делает, оно также открывает одно из других действий в фоновом режиме. Есть ли способ остановить это, чтобы он открыл диалог перед текущей деятельностью (даже если это действие из другого приложения)?

Спасибо, ng93

Теги:
notifications
dialog

3 ответа

0
Лучший ответ

i закончил закрытие всех моих приложений, прежде чем открывать активность диалога, а не идеально, но, похоже, единственный способ получить функциональность im после

4

Я решил это, добавив:

android:taskAffinity=".MyDialog"

в мой диалог в AndroidManifest.xml. Тогда это не связано с вашими другими задачами и может быть показано без привлечения приостановленной активности.

1

Вы не можете отобразить что-то перед другой деятельностью приложения. "впереди" несколько неоднозначно, поэтому я поясню, что ваше приложение не может одновременно совместно использовать экран с другим приложением.

Как я понимаю, дизайн Android по своей сути требует, чтобы при выполнении чего-то на экране процесс/задача приложения находились на переднем плане и в фокусе, тем самым фокусируя другие действия для этой задачи. Это означает, что другие приложения не работают с фокусом пользовательского интерфейса, когда ваше приложение находится в фокусе.

Это означает, что, например, когда ваше приложение запускает действие, оно сфокусирует стек приложений в приложении и добавляет новую активность (в данном случае, ваше диалоговое окно) поверх стека приложений. В результате, если вы нажмете "назад" во время отображения диалогового окна, вы вернетесь к активности, которая была ранее показана. Если стек очищен от предыдущих действий, "назад" приведет вас к приложению, которое ранее отображалось на экране.

Существуют способы очистки стека, такие как: http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP


В зависимости от вашего сценария вы можете очистить стек или выйти из приложения, когда пользователь закроет диалоговое окно. Кроме того, активность диалога может переопределить onBackPressed, так что если пользователь ударит "назад" , действие "завершает" ваше приложение, возвращая пользователя к тому, что они делали перед диалогом.

Дальнейшее чтение для действий и стеков: http://developer.android.com/guide/topics/fundamentals.html#acttask

  • 1
    я думаю, что очистка стека это то, что мне нужно сделать, однако FLAG_ACTIVITY_CLEAR_TOP не работает. Есть ли другой способ очистить стек? ура
  • 0
    FLAG_ACTIVITY_CLEAR_TOP работает так, что очищает стек действий над действием, получающим намерение. Учитывая действия A (root), B, C и D, вызов действия B с флагом CLEAR_TOP удалит C и D, в результате чего B станет главным действием. В вашем приложении я предполагаю, что вы вызываете НОВУЮ активность, в результате чего: A, B, C, D, E (ваша новая диалоговая активность). Потому что нет ничего поверх E, ничего не очищается. Чтобы очистить стек, вы должны вызвать операцию A с CLEAR_TOP, и эта операция запустит диалог с startActivityForResult. Продолжение следует...
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню