Обновления интерфейса через изменения конфигурации: странная точка

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

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

https://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html

Лучшая практика: AsyncTask во время смены ориентации

Ради полноты позвольте мне составить сценарий. У вас есть AsyncTask который выполняет сетевой запрос и должен обновить пользовательский интерфейс в onPostExecute()

Я вижу некоторые проблемы с предлагаемым решением:

  • Предлагаемое решение говорит о том, что onPostExecute() гарантированно не будет вызываться во время между вызовами onDetach() и следующий onAttach() но что, если AsyncTask возвращается рано (после активности onPause() и перед звонком onDetach()). Если onPostExecute() выполняется в течение периода, так как onSaveInstanceState() будет вызвано, любое обновление в представлениях не будет сохраняться при перезапуске активности.
  • Во-вторых, если AsyncTask возвращает так, что onPostExecute() выполняется до вызова Activity onCreate() тогда представления не будут инициализированы для каких-либо обновлений представлений, которые будут еще переданы.

Есть ли какое-либо эффективное решение этой проблемы, которое решает проблему утечек памяти и сохранения состояния при изменениях конфигурации?

0 ответов

Другие вопросы по тегам