#android #android-activity #android-manifest
#Android #android-активность #android-манифест
Вопрос:
Чтение документации Android и некоторых приведенных здесь ответов оставило неясным, как должен работать clearTaskOnLaunch. В частности
1) Как определяется корневая активность? Это просто тот, у которого фильтры ПО УМОЛЧАНИЮ, LAUNCHER или MAIN intent?
2) Запуск с «главного экрана» в документации означает начальный экран ОС или список приложений, правильно? То есть не внутри приложения.
3) Очищает ли clearTaskOnLaunch стек действий всякий раз, когда это действие запускается с главного экрана, или только когда с главного экрана запускается процесс этого действия? Потому что в документах указано первое, но сообщения здесь указывают на второе. Я думаю, это зависит от того, каково определение «запуска».
Редактировать: 4) Означает ли «очистка» стека действий его буквальное стирание или выполнение цикла действий с помощью onCreate() и finish()?
Я манипулировал clearTaskOnLaunch всеми мыслимыми способами без какого-либо эффекта. Я поместил это в свою корневую активность в манифесте, затем поместил это в КАЖДУЮ активность на всякий случай, перезапустил свое приложение после полного завершения процесса и т.д. Мой стек активности просто не очищается.
Кто-нибудь может предложить полный обзор того, как реализовать clearTaskOnLaunch?
Ответ №1:
Вот полный ответ от инженера Android по группам: http://groups.google.com/group/android-developers/browse_thread/thread/da024bcaf4e1960f
Чтение документации Android и некоторых ответов здесь (и в StackOverflow) оставило неясным, как должен вести себя clearTaskOnLaunch, в частности:
1) Означает ли «очистка» стека действий его буквальное стирание или выполнение цикла действий с помощью onCreate() и finish()?
Все действия в очищаемом стеке будут проходить через жизненный цикл так, как если бы они вызывали функцию finish(). Активность root, как правило, будет сохранена как есть.
2) Как определяется корневая активность? Это просто тот, у которого фильтры ПО УМОЛЧАНИЮ, LAUNCHER или MAIN intent?
По сути, это первое действие в стеке. Намерение — это намерение, используемое для запуска стека.
3) Запуск с «главного экрана» в документации означает начальный экран ОС или список приложений, правильно? То есть не внутри приложения.
На самом деле это не имеет значения — это просто тот, кто задает намерение.ФЛАГ_АКТИВНОСТИ_УСТАНОВИТЬ_ЗАДАЧУ, ЕСЛИ ЭТО НЕОБХОДИМО. Стандартный лаунчер устанавливает это значение при запуске приложения с помощью значка. Вы можете настроить это самостоятельно, если хотите.
4) Очищает ли clearTaskOnLaunch стек действий всякий раз, когда это действие запускается с главного экрана, или только когда процесс этого действия запускается с главного экрана? Потому что в документах указано первое, но сообщения здесь указывают на второе. Я думаю, это зависит от того, каково определение «запуска»?
Всякий раз, когда он запускается с главного экрана. Тот факт, что процессы завершаются и перезапускаются, должен быть невидим для пользователя.
Я манипулировал clearTaskOnLaunch всеми мыслимыми способами без какого-либо эффекта. Я поместил это в свою корневую активность в манифесте, затем поместил это в КАЖДУЮ активность на всякий случай, перезапустил свое приложение после полного завершения процесса и т.д. Мой стек активности просто не очищается.
«Настройки» использует это в качестве примера — если вы зайдете в «Настройки», немного покопаетесь, нажмете «Домой», а затем снова запустите «Настройки», вы окажетесь в «домашнем задании» вместо того, куда вы заходили в последний раз. Он просто устанавливает флаг для основной активности своего приложения.