Класс DownloadManager
Класс DownloadManager позаботится о поиске соответствия идентификатора загрузки действительному файлу. Этот пример приложения осуществляет загрузку файла в публичную область на SD-карте, но с помощью одного из методов setDestination*() объекта DownloadManager. Request файл можно загрузить в приватную область.
Класс DownloadManager имеет собственное приложение Downloads (Загрузки), которое позволяет просмотреть загруженные файлы. В меню приложений на устройстве Android или в эмуляторе поищите значок, показанный на рис. 15.6.
Приложение Downloads можно также использовать для получения загруженных файлов. Попробуйте сделать это. После запуска приложения Downloads вы увидите экран, похожий на показанный на рис. 15.7. Меню в нижней части экрана появляется после отметки флажка, соответствующего нужной загрузке.
DownloadManager содержит поставщик контента для информации о загруженных файлах. Приложение Downloads просто обращается к этому поставщику контента, чтобы отобразить пользователю список доступных загрузок. Это значит, что внутри приложения можно также опрашивать поставщик контента и получать информацию о загрузках. Для этого нужно использовать объект DownloadManager.Query и метод
query() класса DownloadManager. Однако опций для поиска не так уж и много. Искать можно по идентификатору загрузки (одному или нескольким) или по состоянию загрузки. Результатом метода query () является объект Cursor, который служит для опроса строк из поставщика контента DownloadManager. Доступные столбцы перечислены в документации по DownloadManager и включают такие аспекты, как локальный URI загруженного файла, количество байт, медиатип файла, состояние загрузки и т.п. Для доступа к поставщику контента подобным образом необходимо добавить к файлу AndroidManifest.xml разрешение AC CESS_ALL_D OWNL OAD S.
И, наконец, с помощью метода remove () класса DownloadManager можно отменить загрузку, хотя это не приводит к удалению файла, если тот уже был загружен.
Итак, выше было показано, как оперировать службами на основе HTTP и управлять интерфейсом к этим службам с помощью специального класса по имени AsyncTask. Типичный сценарий использования AsyncTask — это определенная операция, выполняющаяся не слишком длительное время, результат которой напрямую влияет на пользовательский интерфейс. А что если требуется запустить фоновую обработку, которая протекает долго, или обратиться к какой-то функциональности, отличной от пользовательского интерфейса, которая находится в другом приложении? Для таких ситуаций в Android предусмотрен механизм служб, рассматриваемый в следующем разделе.
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.