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