Может ли ОС Android запускать приложение с активностью, отличной от активности запуска?
У меня есть приложение, которое показывает некоторые странные ошибки. Приложение попадает в состояние, в котором некоторые глобальные данные имеют нулевое значение, которое не должно быть нулевым (если смотреть на логику приложения, нет пути к этому состоянию). Я подозреваю, что ОС либо сама перезаписывает глобальные данные, либо перезапускает мое приложение (или запускает мое приложение) и пропускает начальную активность. Возможен ли какой-либо из этих сценариев? (Конечно, моя логика всегда может быть неправильной, но на данный момент я действительно подозреваю, что происходит что-то еще).
4 ответа
ДА, на самом деле этого следует ожидать в различных случаях:
Если ваше приложение переходит в фоновый режим, а Android заканчивает тем, что убивает его, чтобы вернуть ресурсы, последующее возвращение этого может показаться пользователю незаметным, но на самом деле происходит в совершенно новом процессе приложения. Возврат был бы непосредственно к Деятельности, в которой они были последними, но в новом процессе. OnCreate() других действий в пакете (например, действия по запуску) не будет вызываться, если только эти действия явно не повторно посещены навигацией пользователя или намерением откуда-либо.
Активность запуска (то есть что-то с android.intent.category.LAUNCHER) - не единственная точка входа, которую вы можете иметь в своем приложении. Многие приложения содержат действия, которые имеют фильтры намерений, которые регистрируют их для обработки android.intent.action.VIEW с категорией android.intent.category.DEFAULT и спецификацией некоторого типа контента, который они могут обрабатывать. Приложения такого рода могут вообще не иметь активности запуска в пакете (хотя она может быть включена для просмотра содержимого, установки параметров конфигурации или для других функций).
Launcher используется для определения активности, которая должна быть запущена при запуске приложения.... так что я не думаю, что это возможно...
Can Android OS start app with different Activity than Launcher Activity?
Нет, это всегда поиск активности с тегом запуска, с которого можно начать.
Добавьте свой код и уточните, какие глобальные данные получают нулевое значение:)
Я очень сомневаюсь в этом. Идея средства запуска заключается в том, что он определяет действие, которое получает намерение запуска от ОС.
Исходя из описанного вами поведения, вы можете захотеть провести исследование жизненных циклов деятельности.