Деревянные окна

22.08.2016


Сразу после вызова takeContentChanged () с содержимого снимается метка * «изменённое», и все последующие вызовы этого метода не будут возвращать значение true, пока не произойдёт новое изменение содержимого, о котором сообщает метод onContentChanged().


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


Объект класса, производного от AsyncTaskLoader, доставляет результаты после возврата новых данных из метода loadlnBackgroundf). Но запуск повой фоновой задачи - то есть вызов метода loadlnBackground () - при отсутствии новых данных является бесполезной тратой ресурсов. Вместо этого загрузчик должен быть реализован так, чтобы ускорить доставку результатов клиентам. Например, если загрузчик уже доставил результат, а сообщений об изменении содержимого не поступило, нет никакого смысла запускать новую фоновую задачу. Гораздо эффективнее будет вернуть предыдущий полученный результат. Из этого следует, что загрузчик должен кэшировать загружаемые данные, то есть сохранять результат последней успешной операции загрузки. Управление доставкой осуществляется с помощью кэша. Необходимо также переопределить метод Loader.deliverResult (), который доставляет данные клиентам, если вызывается, когда загрузчик находится в состоянии started, как показано в следующем примере.