Неожиданное поведение при запуске действия в стиле диалога

Я заметил из 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 закончен и уходит.