Ответ 1
Изменить:
Я написал довольно подробно о LoaderManager
в этом сообщении в блоге. Проверьте это и дайте мне знать, если это будет полезно!:)
Оригинальное сообщение:
Определенно, определенно, с идеей LoaderManager
. Класс CursorLoader
разгружает работу по загрузке данных в потоке и сохраняет данные постоянными в течение коротких событий обновления активности, таких как изменение ориентации. Помимо выполнения начального запроса, CursorLoader
регистрирует a ContentObserver
с запрошенным вами набором данных и вызывает forceLoad()
сам по себе, когда набор данных изменяется и, таким образом, автоматически обновляется. Это очень удобно, так как вам не нужно беспокоиться о выполнении запросов самостоятельно. Конечно, можно использовать AsyncTask
, чтобы поддерживать дружественный интерфейс пользовательского интерфейса приложения, но он будет включать в себя гораздо больше кода... и реализацию вашего класса, чтобы он, например, сохранял загруженный Cursor
Activity
не будет простым. Суть в том, что LoaderManager/Loader
сделает это автоматически для вас, а также заботится о правильном создании и закрытии Cursor
на основе жизненного цикла Activity
.
Чтобы использовать LoaderManager/CursorLoader
в приложении, ориентированном на уровень API до 11, просто используйте класс FragmentActivity
в пакете совместимости. A FragmentActivity
является всего лишь Activity
и был создан для поддержки совместимости Android и не требует использования Fragment
в вашем приложении. Просто используйте getSupportLoaderManager()
вместо getLoaderManager()
, и вы должны быть настроены. Разумеется, вы могли бы реализовать родительский FragmentActivity
для каждого экрана и отобразить его макет в Fragment
(используя FragmentActivity.getSupportFragmentManager()
в методе Activity onCreate()
). Эта конструкция может облегчить переход к многоуровневым макетам, если вы когда-либо решили оптимизировать свое приложение для планшетов. Это хороший опыт обучения:).
Это довольно приятный учебник. Попробуйте и проработайте свой путь через него и не стесняйтесь оставлять комментарий, если у вас есть другие вопросы.