Онлайн касса17.08.2017Обратите внимание, что теперь можно установить тайм-аут в 60 секунд, не переживая о возникновении условия ANR. В коде видно, что информация о ходе работ обновляется в течение шагов настройки подключения HttpClient, выполнения HTTP-запроса, преобразования ответа в виде изображения в массив байтов и затем построения из него объекта Bitmap. Когда downloadImage() вернет управление doInBackground() и будет произведен возврат из doInBackground(), Android позаботится о получении возвращаемого значения и передаче его в onPostExecute(). После передачи объекта Bitmap в on- PostExecute() безопасно обновить ImageView с ним, т.к. onPostExecute() выполняется в главном потоке активности. Но что если во время загрузки возникнет какое-то исключение? Если вместо изображения из HTTP-запроса будет получено исключение, объект Bitmap будет равен null. Этот факт можно определить в onPostExecute () и отобразить сообщение об ошибке, не устанавливая ImageView в Bitmap. Разумеется, в случае сбоя загрузки можно предпринять и другое действие. Имейте в виду, что в главном потоке не должен выполняться только код из метода doInBackground(). Поэтому не делайте в этом методе ничего такого, что бы затрагивало пользовательский интерфейс, иначе возникнет проблема. Например, не вызывайте в doInBackground() методы, которые модифицируют элементы пользовательского интерфейса. Взаимодействуйте с такими элементами только в методах onPreExecute(), onProgressUpdate() и onPostExecute(). Возможно вам понадобится онлайн касса. Давайте дополним последний пример XML-файлом компоновки (листинг 15.10) и Java-кодом для активности (листинг 15.11). Компоновка предельно проста. Имеется одна кнопка и рядом с ней текстовое сообщение. Этот текст будет отражать информацию о ходе работ. Ниже есть пространство для сообщения об ошибке, текст которого отображается красным цветом. И, наконец, предусмотрено место для вывода изображения.
|
|
|