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