2016-09-27 1 views
3

рассмотрите пример this из андроидного учебника,Погрузчики в фрагменте - будет ли утечка фрагмента?

getLoaderManager(). InitLoader (0, null, this);

называется onActivityCreated, давая экземпляр загрузчика CursorLoaderListFragment.this, насколько я могу сказать, что нет garuantee, что данный фрагмент жизненного цикла равно жизненного цикла Activity следовательно LoaderManager. Итак, если фрагмент удаляется, а Activity все еще живет, это не вызовет утечку памяти?

Если да, то как они должны исправить этот пример?

+0

Хорошее наблюдение, но AFAIK, если активность все еще активна, когда фрагмент уничтожен, тогда загрузчик должен быть уничтожен им, потому что он был инициализирован в 'onActivityCreated'. –

ответ

2

Погрузчики уничтожаются и очищаются, когда связанный Фрагмент или Деятельность разрушается. Если вы передадите экземпляр фрагмента в initLoader(), тогда загрузчик будет уничтожен, когда экземпляр фрагмента будет уничтожен.

Ссылка:

https://medium.com/google-developers/making-loading-data-on-android-lifecycle-aware-897e12760832#.ai7whgsv4

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