AsyncTask с вращением экрана – onRetainNonConfigurationInstance устарела

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

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

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

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

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

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

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

Intereting Posts