Приложение очищается от Android - PullRequest
3 голосов
/ 20 января 2011

Я запускаю свое приложение для Android, которое, в свою очередь, инициализирует некоторое состояние на первом экране.В приложении много экранов, и после случайной навигации по нескольким экранам я минимизирую приложение с помощью клавиши «Домой».Теперь, после запуска некоторых приложений с телефона, ОС решает, что нужно освободить мое приложение, и, следовательно, убивает его.

Теперь, когда я снова нажимаю на значок приложения, ОС запоминает историю и пытаетсявернитесь на экран, откуда я свернул приложение.Но проблема в том, что операционная система очищала мое приложение когда-то, все мои состояния теряются, и экран может не иметь никакого отношения.

Как мне решить эту проблему?Как мне убедиться, что ОС вызывает экран запуска, если он был очищен ранее, а не Activity в истории?

Ответы [ 2 ]

3 голосов
/ 20 января 2011

Из вашего комментария об инициализации синглтон-класса я также столкнулся с ситуациями, похожими на вас. Поскольку я не мог избежать этого, я использовал класс Application . Всякий раз, когда ОС решает очистить ваше приложение, при следующем запуске приложения будет вызываться onCreate на Application class. Переопределите метод onCreate для инициализации одноэлементного класса, вместо того, чтобы делать то же самое на экране запуска

Фрагмент кода выглядит следующим образом

public class CellApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        // Do your singleton class initialization here
    }
}
2 голосов
/ 20 января 2011

Вы не уверены, что ОС вызывает экран запуска.Лучший способ решить эту проблему - сохранить состояние ваших экранов.

Каждый раз, когда одно из ваших занятий помещается в фоновый режим onSaveInstanceState вызываетсяЭто позволяет вам сохранять состояние вашего приложения в пакете, который предоставляется в этом методе.Если ваше приложение возобновит работу, OnCreate будет вызываться с точно такой же связкой.Теперь вы можете перестроить приложение в том же состоянии, в котором его покинул пользователь.

Просто проверьте, равен ли null пакет в onCreate.Если оно пустое, ваша деятельность является новой, если не перестраивать состояние из пакета.

...