Андроида (https://developer.android.com/guide/components/loaders.html) говорит, что, когда я использую загрузчик делать запросы SQL, я должен делать swapCursor (нуль) в методе onLoaderReset:Почему у меня есть swapCursor (null) в onLoaderReset? документация
onLoaderReset Этот метод вызывается, когда ранее созданный загрузчик сбрасывается , что делает его данные недоступными. Этот обратный вызов позволяет узнать, когда данные будут выпущены, чтобы вы могли удалить свою ссылку на него.
Эта реализация вызывает swapCursor() со значением нуль:
// This is the Adapter being used to display the list's data.
SimpleCursorAdapter mAdapter;
...
public void onLoaderReset(Loader<Cursor> loader) {
// This is called when the last Cursor provided to onLoadFinished()
// above is about to be closed. We need to make sure we are no
// longer using it.
mAdapter.swapCursor(null);
}
Я не понимаю, почему я должен поменять курсор адаптера на нуль в onLoaderReset. Насколько я знаю, загрузчик сбрасывается при уничтожении активности. Но когда активность разрушена, имеет право на сбор мусора, и все ссылки, которые эта деятельность сохраняет, также имеют право на сбор мусора. Поэтому не имеет значения, имеет ли какой-либо из этих адаптеров e-ссылку на курсор - это не помешает отображению мусора.
Итак, почему я должен менять курсор адаптера на нуль в onLoaderReset?
Я думаю, что это предложение неверно: «Действия не будут собираться мусором, если его основные члены ссылаются на сторону деятельности». Я думаю, что верно только противоположное: действия не будут собираться мусором, если они ссылаются извне активности – user983447
. Я не получаю никаких отличий от вышеуказанных двух предложений. – Kartheek
Это разница между ссылкой и ссылкой. – user983447