Обновления интерфейса через изменения конфигурации: странная точка - PullRequest
0 голосов
/ 04 декабря 2018

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

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

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

Рекомендация: AsyncTask во время изменения ориентации

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

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

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

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

...