Я обнаружил, что если мое устройство находится в этом безумном спящем состоянии, моя активность запускается дважды, если я затем нажимаю на push-уведомление.Сначала нажатие запускает действие с данными в намерении.Затем, после этого, активатор запуска вызывается (с пустым намерением) и запускает главный экран.
Я исправил это как здесь -> Активность открылась дважды
Подводя итог:
1) Я изменил свой код так, чтобы все моиглубокие ссылки, push-уведомления и т. д. будут вызывать активность lauchner.Затем деятельность решает, что делать.Это означает, что у нас есть единственная точка входа в приложение.Это делает все проще и код понятнее.(с этим исправлением одно и то же действие будет вызвано дважды. Нам нужно сделать еще немного, чтобы исправить это)
2) Я пометил действие в манифесте android:launchMode="singleTask"
.Это означает, что если экземпляр действия уже существует, он будет повторно использован и не будет создан второй раз.
3) Флаг из 2) вызывает метод обратного вызова.Вместо повторного вызова операции система повторно использует уже запущенную операцию и вызывает метод onNewIntent(intent)
.Это означает, что если действие начато заново, то будет вызван onCreate()
.Если действие используется повторно (потому что оно было инициировано push-уведомлением, Deeplink и т. Д.), То будет вызван onNewIntent(intent)
.В обоих случаях, onCreate()
и onNewIntent()
, я вызываю метод, чтобы решить, какой экран / фрагмент / действие будет следующим, и передаю намерение из getIntent()
.Готово.