AsyncTask с поворотом экрана - onRetainNonConfigurationInstance устарел - PullRequest
6 голосов
/ 08 ноября 2011

Я все еще пытаюсь найти «правильный» шаблон проектирования при работе с AsyncTask s и поворотом экрана.Я прочитал это сообщение в блоге общего пользования , которое ссылается на этот код , но метод onRetainNonConfigurationInstance устарел.Волшебное предложение в документации гласит: «Гарантия отсутствия обработки сообщений при переключении на следующее действие упрощает использование с активными объектами ...», что является действительно важной частью того, что сделал этот метод.Я не вижу его предложения использовать setRetainInstance () для достижения той же цели.

Я также видел сообщения , такие как этот , чей ответ одинна самом деле не что иное, как плохой взлом, который охватывает только 90% случаев использования (т. е. что произойдет, если ваша задача выполняется, а затем приходит телефонный звонок, это решение не будет работать).

Было предложено просмотреть код здесь для примеров AsyncTask, но если я не плотный, я не вижу их где-либо в приложении (при использовании поиска функция в коде Google)

Этот вопрос, очевидно, задавался много раз, но я не видел актуальный, правильный ответ.Если таковой существует, пожалуйста, ответьте и закройте как дубликат, если необходимо, но хотя бы ответьте!:)

Это еще одна ссылка , в которой рассматривается тот же устаревший метод.

Ответы [ 2 ]

1 голос
/ 08 ноября 2011

Это не рекомендуется только для Honeycomb и выше, и на тех же будет работать отлично. «Новый» способ - использовать загрузчики (вы можете использовать библиотеку совместимости, чтобы получить их в версиях, предшествующих HC) или сохраненные фрагменты. Если вы вызываете setRetainInstance(), то экземпляр передается как есть во вновь созданное действие (на самом деле они используют onRetainNonConfigurationInstance в FragmentActivity библиотеки совместимости), так что это фактически то же самое, что у вас сейчас.

1 голос
/ 08 ноября 2011

Нет ничего плохого в использовании устаревшего метода. Если ваш AsyncTask ЧРЕЗВЫЧАЙНО критичен, что вы не можете отменить его и запустить его снова, если ваша ориентация изменится, вам следует рассмотреть возможность использования службы.

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