Надеюсь, кто-то может помочь мне понять, если не решение, по крайней мере, объяснение поведения.
Проблема:
На некоторых устройствах нажатие значка запуска приводит к возобновлению текущей задачи, а в других - к запуску начального запуска (фактически перезапуск приложения). Почему это происходит?
Деталь:
Когда вы нажимаете "Значок запуска", приложение запускается нормально. То есть я предполагаю, что Intent запускается с именем вашего первого Activity
с действием android.intent.action.MAIN
и категорией android.intent.category.LAUNCHER
. Это не всегда может быть так:
На большинстве устройств, если вы нажмете значок запуска после того, как приложение уже запущено, текущее запущенное действие в этом процессе возобновляется ( НЕ начальный Activity
). Он возобновляется так же, как если бы вы выбрали его из "Недавних задач" в меню ОС. Это поведение, которое я хочу на всех устройствах.
Однако на других устройствах происходит другое поведение:
-
В Motorola Xoom, когда вы нажимаете значок запуска, приложение всегда запускает начальный запуск
Activity
независимо от того, что в данный момент выполняется. Я предполагаю, что значки запуска всегда начинаются с намерения "LAUNCHER". -
На вкладке Samsung 2, когда вы нажимаете значок запуска, если вы только что установили приложение, он всегда будет запускать начальный
Activity
(такой же, как Xoom), однако после перезапуска устройства после установки значок запуска будет вместо этого возобновлен. Я полагаю, что эти устройства добавляют "установленные приложения" в таблицу поиска при запуске устройства, которые позволяют значкам запуска запускать правильно запущенные задачи?
Я прочитал много ответов, которые похожи на мою проблему, но просто добавление android:alwaysRetainTaskState="true"
или использование launchMode="singleTop"
в Activity
не являются ответом.
Edit:
После самого последнего запуска этого приложения мы обнаружили, что такое поведение началось на всех устройствах после первого перезапуска. Что кажется сумасшедшим для меня, но, просматривая процесс перезагрузки, я не могу найти, что происходит не так.