Android резюме приложение из списка последних приложений

Я пытаюсь исправить ошибку в своем коде и надеюсь, что кто-то может указать мне правильное направление. Если мое приложение переходит в фоновый режим и возобновляется тем, что пользователь просто заходит в "приложения" и выбирает мое приложение, все работает нормально.

Однако, если они помещают его в фоновый режим и возобновляют его, удерживая нажатой кнопку "Домой" и выбирая его из списка последних приложений, я получаю ошибку. У меня сложилось впечатление, что эти два действия должны делать то же самое?

Кто-нибудь знает, в чем разница между возобновлением приложения из обычного списка приложений и его возобновлением, удерживая нажатой кнопку "Домой", а затем выбирая его из этого списка?

1 ответ

Решение

Точный ответ немного зависит от реализации вашего домашнего экрана или приложения запуска. Однако из того, что я испытал до сих пор, я почти уверен, что...

  1. ... приложения, которые запускаются из вашего меню или главного экрана, обычно запускаются Intent, Чтобы быть более точным: активный модуль запуска показывает все действия в его меню, которые имеют действие android.intent.action.MAIN" и категория android.intent.category.LAUNCHER и если вы выбираете приложение, оно создает Intent и этим запустите приложение:

    Intent intent = new Intent(Launcher.context, SelectedActivity.class);
    intent .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
    startActivity(intent);
    

    Скорее всего, это создает новый экземпляр активности запущенного приложения, за исключением некоторых флагов, которые могут этого избежать (android:launchMode="singleTop")

  2. ... смотря на недавние задачи, насколько я могу видеть, это работает иначе: список задач опирается, скорее всего, на список, который создается getRecentTasks() и выводит выбранное приложение на передний план. Это можно сделать с помощью moveTaskToFront (). Только если приложение / действие было завершено, оно создается заново (попробуйте убить приложение, и вы увидите, что оно воссоздано).

Вывод: как вы можете видеть, недавний список задач работает скорее как (возврат) к приложению, вызывая потенциально onResume() в то время как запуск приложения из меню вызовет onCreate(),

Примечание: один пакет приложения может содержать более одного приложения. Приложение " Контакты" и " Телефон" во многих случаях являются просто двумя различными действиями в одном прилагаемом пакете приложения (то есть файле APK).

Надеюсь, что это помогает понять другое поведение... Ура!

Другие вопросы по тегам