Обработка изменений ориентации экрана в Android - я делаю это правильно? - PullRequest
1 голос
/ 29 июля 2011

Я обнаружил, что Android разрушает и воссоздает действия во время изменения ориентации экрана.У меня есть активность, которая автоматически ищет номинальное местоположение устройства и отображает его обратно пользователю.Это местоположение хранится в объекте учета, который используется на протяжении всего приложения.Вот мой код:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.location);

    currentLocation = (TextView) findViewById(R.id.textCurrentLocation);
    if (savedInstanceState == null)
        new LocationDetectionTask(this).execute((Void[]) null);
    else
        currentLocation.setText(record.getLocation());

    Log.d(TAG, "onCreate");
}

(Как вы могли бы сказать, record представляет этот объект записи данных).

Достаточен ли этот метод обработки изменений ориентации экрана?Кстати, я не переопределяю onSaveInstanceState(Bundle).

Кроме того, побочный вопрос: поскольку LocationDetectionTask является AsyncTask, как мне поступить с обработкой изменений ориентации экрана для этого?1013 * Редактировать: я забыл уточнить это.После того, как LocationDetectionTask находит местоположение, оно помещает его в record.

1 Ответ

2 голосов
/ 29 июля 2011

Вы должны попытаться использовать onSaveInstanceState (Bundle) для сохранения вашей информации, так как она будет вызвана до того, как действие разрушится при изменении ориентации. Я бы попытался использовать onRestoreInstanceState (Bundle) при получении информации обратно, но он должен работать и с методом onCreate (). (Пример здесь Сохранение состояния активности Android с использованием Save Instance State )

Имейте в виду, что Bundle должен использоваться для сохранения примитивных типов. Если вы хотите передать более сложный объект, вы можете попробовать передать объект Parcelable. (Более подробная информация здесь http://prasanta -paul.blogspot.com / 2010/06 / android-parcelable-example.html )

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