6

С developer guide on Loaders,Когда действие уничтожается из-за изменения конфигурации, также уничтожены его Погрузчики?

Они автоматически подключится к курсору последнего загрузчика когда воссоздается после изменения конфигурации. Таким образом, они не нуждаются в повторных запросах .

С этого blog post on Loaders,

когда активность разрушена, активность инструктирует его LoaderManager уничтожить и закрыть свои Погрузчики (а также любые ресурсов, связанные с ними, такими как курсора).

Вопрос в том, какой из них правильный? Когда действие уничтожается из-за изменения конфигурации, что происходит с (1) его загрузчиками (2) ресурсами, связанными с его загрузчиками, такими как Cursor.

+2

Изменения конфигурации обрабатываются несколько иначе, чем разрушение в фоновом режиме или в обратном порядке. Например, экземпляры фрагментов могут сохраняться в конфигурационных изменениях, но не в других типах уничтожения. Это несоответствие может быть что-то вроде этого, но я не знаю деталей, поэтому это комментарий вместо ответа. –

+0

@KevinKrumwiede я бы хорошо ответил как ответ. но добавить к этому: действия, не содержащие ресурсов или голые действия, мгновенно убиваются, я имею в виду, что их onDestroy() называются довольно быстрыми, но гораздо более загруженная активность требует времени, чтобы вызвать onDestroy(), я думаю, это переводится, когда его полностью убить .. – Elltz

ответ

0

Как уже упоминалось в this blog post about loaders, он конкретно называет, что:

Самая лучшая часть о том, что Погрузчики Погрузчики выживают изменения конфигурации.

Вы заметите, что активность является не уничтожены изменения конфигурации - как показано в this picture: Activity lifecycle

onDestroy() только вызывается, когда деятельность отделки или разрушается системой (т.е. your process dies).

+0

Как насчет 'Activity.onDestroy()'? Позволяет ли он вызвать любой из обратных вызовов Loader? Насколько я протестировал, если я нажму кнопку «Назад», вызывается 'Loader.onReset', но если я вытащил приложение из recents, он не будет вызван. В этом случае вызывается только 'Activity.onDestroy()'. Как мне с этим справиться? Должен ли я вручную вызывать 'reset' на моем загрузчике в' Activity.onDestroy() '? –

+0

@ MichałZ.- 'onDestroy()' FragmentActivity' обращается к 'FragmentController.doLoaderDestroy()', на 'FragmentHostCallback.doLoaderDestroy()' на 'LoaderManager.doDestroy()' на 'LoaderInfo.destroy()' на 'Loader. reset() ', поэтому я не уверен, почему это не так для вас. У вас есть пример проекта, который вы можете прикрепить к ошибке на [b.android.com] (http://b.android.com)? – ianhanniballake

+0

спасибо за ваш ответ. Я проверю его немного больше, а потом, в конце концов, напишу о проблеме. Или, может быть, речь идет о заказе - возможно, это вызвано после 'onDestroy', поэтому я не вижу журналы. Любая идея, как отладить его? –