У меня есть раздражающая проблема с стеком активности, для которого я не нашел решение.Как предотвратить многократное отображение активности при повторном запуске приложения?
В основном у меня есть деятельность, которая действует как «стартовая» активность (основная деятельность в моем манифесте, это начинается с запуска и т. Д.). Это полупрозрачный, устанавливается с помощью:
андроид: тема = «@ андроид: стиль/Theme.Translucent.NoTitleBar»
Что она делает это проверить Intent, который подается к нему. Если данные намерения пустые, в нем начинается новое действие, которое является основным видом деятельности для приложения.
Если данные о намерениях содержат определенные команды, то действие стартера должно выполнять определенные задачи, а затем выйти, даже не запуская основное действие. Таким образом, это должно произойти без какого-либо пользовательского интерфейса (за исключением всплывающего сообщения, когда это делается).
Моя проблема заключается в том, что если основное действие было запущено, если пользователь использует кнопку «домой», чтобы оставить его, то при следующем запуске стартовой операции с помощью команды основное действие также проявится кратковременно.
Я предполагаю, что это из-за стека активности, так как я не перезапускаю основное действие из активности стартера в этом случае.
Я пробовал различные решения безрезультатно. Я не могу использовать финиш() в основном действии в onPause или onStop, так как это также завершает действие, если пользователь, например, входит в активность настроек и не хочет поведения. Я также попробовал варианты повторного запуска активности стартера с помощью
intent.setFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
, но это, похоже, не работает.
Странно то, что когда это нежелательное поведение происходит, onCreate/onResume/onStart не призвал к основной деятельности. Все еще это показывает! Я предполагаю, что это связано с тем, что оно сложено, и поскольку операция запуска является полупрозрачной, через нее отображается основная деятельность.
Сейчас я прибегал к отслеживанию, когда пользователь покидает основной. Если он оставит его для запуска другого действия в приложении, я ничего не делаю. Если он оставит его по какой-то другой причине (например, домашний пресс), я завершу работу. Это работает, но если у кого-то есть лучшее предложение, пожалуйста, дайте мне знать. – Owtroid