Помогите Диме помочь помогать помочь помогать

Шкаф для детской комнаты

20.08.2016


Несмотря на кажущееся сходство, эти два метода имеют весьма существенные отличия:


метод initLoader () повторно использует доступный загрузчик, если обнаруживает совпадение идентификаторов. Если загрузчик с заданным идентификатором отсутствует, onCreateLoader () сразу же запрашивает новый загрузчик, после чего начинается загрузка данных, а её результат передаётся в метод onLoadFini- shed (). Если загрузчик с заданным идентификатором уже существует, самые последние загруженные данные тут же передаются в метод onLoadFinishedO. Метод initLoader() обычно вызывается при создании клиента, чтобы можно было либо создать новый загрузчик, либо извлечь результат из уже существующего загрузчика. Это означает, что загрузчик повторно используется после изменения конфигурации и новые данные загружать нс нужно: кэшированный результат в загрузчике может быть доставлен немедленно;


метод restartLoader () не использует загрузчиков повторно. Если существует загрузчик с заданным идентификатором, restartLoader () удаляет его и все хранящиеся в нём данные, а затем создаёт новый объект Loader, вызывая метод onCreateLoader (). После этого инициализируется новая операция загрузки данных. Поскольку ранее существующие экземпляры загрузчиков удаляются, данные, хранящиеся в кэшах этих загрузчиков, удаляются вместе с ними. Посмотрите шкаф для детской комнаты.


Метод initLoader () следует выбирать, когда жизненный цикл связанного с загрузчиком источника данных совпадает с жизненным циклом клиента, например компонента Activity, который просматривает данные в объекте Cursor из провайдера контента. Здесь преимущество заключается в том, что initLoader () может доставлять кэшированный результат, если доступны данные, полученные после выполнения предыдущей операции загрузки, что очень удобно после изменений конфигурации.