Неожиданное поведение при запуске действия в стиле диалога
Я заметил из WhatsApp такое поведение: когда поступит новое сообщение, WhatsApp запустит активность в стиле диалога, и такое действие может быть отменено или подтверждено пользователем.
Поэтому я добавил в приложение аналогичную работу в стиле диалога. В целях тестирования я также добавил диспетчер аварийных сигналов и приемник сигналов тревоги, чтобы эта активность запускалась каждые 10 секунд приемником тревоги.
Код, который я использовал для запуска действия в стиле диалога:
Intent dialogIntent = new Intent(MyApplication.sharedApplication, MyDialogStyleActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
MyApplication.sharedApplication.startActivity(dialogIntent);
Все выглядело отлично, если мое приложение не было запущено. Появится диалоговое действие, за которым был начальный экран, так же как и поведение WhatsApp.
Но возникла проблема, если мое приложение было запущено и помещено в фоновом режиме, а затем аварийный сигнал запустил запуск активности диалога, перед запуском активности в диалоге основное действие моего приложения вернется на передний план и показать также.
Я запутался, все, что я хочу сейчас, это то, что, даже если мое приложение было запущено, когда что-то запускает активность в стиле диалога, будет отображаться только эта активность в стиле диалога, никакой основной активности или каких-.
Кто-нибудь может помочь?
Ответы
Ответ 1
В вашем приложении хранится стек действий. Таким образом, ваше основное действие A и ваша активность в диалоговом режиме B представлены в виде A- > B в вашем стеке активности приложения.
Когда ваше приложение запускается и помещается в фоновый режим. Когда ваш диалог активируется и выводится на передний план, ваше основное действие A остается в живых и, следовательно, будет показано также. Возможно, вы можете вызвать "finish()" в после startActivity (dialogActivity), чтобы убедиться, что A закончен и уходит.