Splash: не создавать дубликат при тапе по иконке

Если приложение уже запущено (есть задача), launcher-активность добавляется
поверх неё. Добавлен guard isTaskRoot: в этом случае SplashActivity сразу
закрывается, текущий экран просто разворачивается — без splash и перезапуска.
Холодный старт (задача отсутствует) работает как прежде.
This commit is contained in:
ua1zbe
2026-10-09 14:25:04 +03:00
parent 96ab5c76e2
commit 2d332f10bb

View File

@@ -16,6 +16,18 @@ class SplashActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Тап по иконке при уже запущенном приложении: система добавляет
// SplashActivity поверх существующей задачи. Не создаём дубликат —
// закрываемся и показываем текущий экран (как «развернуть», без splash).
if (!isTaskRoot &&
intent?.action == Intent.ACTION_MAIN &&
intent?.hasCategory(Intent.CATEGORY_LAUNCHER) == true
) {
finish()
return
}
// Засчитываем запуск только при холодном старте (процесс был выгружен).
// Выход из фона или повторный тап по иконке (процесс жив) не считаем.
if (SvxApp.coldStart) {