Я создаю поисковое приложение события, мы устанавливаем критерии поиска с одного экрана, заполняют на другом экране затем, пользователь может отредактировать критерии поиска с 3-го экрана и переходит к 4-му экрану.
Для достижения выше задачи, я использую статический объект, которые помнят значения вокруг приложения, и я не должен делать никакой дополнительной вещи.
Но я боюсь, если о жизненном цикле статического объекта в андроиде, если низкая память, найденная андроидом, удаляет статические объекты???
Поскольку андроид поддерживает много управление задачами, если пользователь переключается на другое приложение и когда пользователь возвращается, приложение начинает действовать сумасшедшее, статический объект становится удаленным когда это много задача??? какая-либо идея?? и также предложите держать статический объект с помощью одноэлементного метода, лучший подход???
Давайте начнем с небольшого фона: Что происходит, когда вы запускаете приложение?
ОС запускает процесс, присваивает ему уникальный идентификатор процесса и выделяет таблицу процессов. Процесс запускает экземпляр DVM (Dalvik VM); Каждое приложение запускается внутри DVM.
.
DVM управляет разгрузкой класса загрузки, жизненным циклом экземпляра, GC и т.д.
Время жизни статической переменной: Статическая переменная появляется, когда класс загружается JVM и умирает, когда класс выгружается.
Таким образом, если вы создадите андроид-приложение и инициализируете статическую переменную, она останется в JVM до тех пор, пока не произойдет одно из следующих событий:
.
1. класс выгружен
.
2. JVM отключается
3. процесс умирает
Обратите внимание, что значение статической переменной будет сохраняться при переходе на другую активность другого приложения, и ни одно из вышеперечисленных трех не произойдет. В случае, если произойдет что-либо из вышеперечисленных трех, статическая переменная потеряет свое значение.
Вы можете проверить это несколькими строками кода:
Надеюсь, это поможет.
Ну, одноэлементный шаблон также основан на использовании статических переменных, так что на самом деле вы бы находились в одном и том же положении. Хотя статический подход может работать в большинстве случаев, может случиться так, что в некоторых случаях, когда память заполнена и другая активность выходит на первый план, прежде чем ваше приложение перейдет к следующему экрану, процесс вашей активности может быть убит, и вы потеряете статические значения. Однако Android предлагает несколько вариантов сохранения значений между состояниями или их передачи, например:
Примеры использования предпочтений, намерений и базы данных sqlite можно получить, посмотрев на дерево исходных кодов aegis-shield в Google-коде или в других открытых Android-приложениях.
.