Является ли проверка saveInstanceState на null в onCreate хорошим способом определить, было ли устройство повернуто? - PullRequest
4 голосов
/ 23 сентября 2011

Есть кое-что, что я хотел бы сделать в методе onCreate () моей деятельности, только если они созданы в первый раз, а не когда устройство было повернуто (при изменениях конфигурации). В настоящее время я проверяю параметр saveInstanceState, передаваемый в onCreate (). Если он нулевой, то это первый раз, когда начинается действие, иначе был только поворот.

Это хороший и надежный способ сказать это? Есть ли альтернативы этому?

1 Ответ

3 голосов
/ 23 сентября 2011

Я не знаю лучшего решения.Ромэн Гай описывает тот же подход (проверка состояния сохраненного экземпляра или других объектов, которые вы передаете на нулевое значение).

В новом действии в onCreate () все, что вам нужно сделатьвернуть ваш объект, это вызвать getLastNonConfigurationInstance ().В Photostream этот метод вызывается, и если возвращаемое значение не равно NULL, сетка загружается со списком фотографий из предыдущего действия:

private void loadPhotos() {
    final Object data = getLastNonConfigurationInstance();

    // The activity is starting for the first time, load the photos from Flickr
    if (data == null) {
        mTask = new GetPhotoListTask().execute(mCurrentPage);
    } else {
        // The activity was destroyed/created automatically, populate the grid
        // of photos with the images loaded by the previous activity
        final LoadedPhoto[] photos = (LoadedPhoto[]) data;
        for (LoadedPhoto photo : photos) {
            addPhoto(photo);
        }
    }
}

Когда мне лень это делать,Я просто отключаю воссоздание Активности при смене ориентации.Как описано в Как отключить изменение ориентации на Android?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...