Твердомер07.09.2017Переменная pd уже была объявлена в конструкторе (см. листинг 18.4). Вызов в листинге 18.6 создаст диалоговое окно с информацией о ходе работы и отобразит его, как показано на рис. 18.1. Последний аргумент в методе shюwO из листинга 18.6 указывает, является ли диалоговое окно недетерминированным (может ли диалоговое окно предварительно оценивать, сколько имеется работы). Случай детерминированного диалогового окна будет описан позже в этой главе. Метод СоІпВаскдгоипс1() Вся фоновая работа, связанная с асинхронной задачей, выполняется в методе doInBackgroundO. Асинхронная задача планирует запуск этого метода в рабочем потоке. В конечном итоге выполнение работы может занять более 5 секунд. Это основная причина построения абстракции асинхронной задачи. В методе doInBackgroundO из примера, представленного в листинге 18.4, мы просто извлекали каждую строку, как если бы они все вместе образовывали массив. В сигнатуре этого метода явный строковый массив отсутствует, однако один аргумент определен как имеющий переменную длину (см. листинг 18.7). Возможно вам понадобится твердомер. Внутри функции Java трактует этот аргумент так, как если бы он являлся массивом. Таким образом, в коде метода doInBackground() мы читаем каждую строку и заносим ее в журнал, чтобы отразить продвижение работы. Затем организуется ожидание, достаточное для эмуляции длительно выполняющейся операции. Поскольку этот метод выполняется в рабочем потоке, в нем нет доступа к функциональности пользовательского интерфейса Android. Например, отсутствует возможность напрямую обновить любое представление. Нельзя даже отправить сообщение в Toast.
|
|
|