Как стать автором
Обновить

Простое использование AsyncTask и ProgressDialog в Android

Время на прочтение 5 мин
Количество просмотров 30K
Разработка под Android *
Из песочницы
image

Практика создания приложений, отзывчивых к действиям пользователя, предполагает, что все тяжелые операции должны исполняться в отдельном потоке, сообщая тем или иным образом пользователю о своем прогрессе.

Android содержит массу способов для организации данного подхода, но одним из самых удобных можно признать использование AsyncTask и ProgressDialog.

Эта парочка превосходно решает задачу, но начинает приносить невыносимую боль, когда количество Activity с такой логикой переваливает за одну, что приводит к повторению управляющего кода, и еще большую боль, когда приложение должно поддерживать смену ориентации экрана.
Читать дальше →
Всего голосов 60: ↑53 и ↓7 +46
Комментарии 5

«Правильный» html парсинг

Время на прочтение 7 мин
Количество просмотров 106K
Разработка под Android *
Логотип

Первый раз я запустил Eclipse еще весной, почитал книжки на английском, поставил SDK, немного поигрался и забросил. В начале зимы я купил себе первый смартфон на базе Android, но вновь вернутся к разработке меня подтолкнул недавний пост, в котором говорилось, что можно обойтись и знанием C#, с которым в отличии от Java я знаком. Мне было достаточно одного вечера, чтобы понять, что за связку Visual Studio и Monodroid я больше не сяду, позже я прочитал этот пост, где полностью согласился с автором.

После небольшого вступления перейду к теме топика. Довольно большое количество приложений под мобильные устройства взаимодействуют с сайтами и не секрет, что порой нужно получить какую-то информацию со страницы — это может быть курс валют или что-нибудь другое, и нет никакого желания делать это посредством браузера.

Большинство разработчиков, получают html код страницы и перегоняют его в xml, что является неправильным подходом, так как html является «правильным» xml не всегда, вроде на хабре писали, что для браузера не обязателен тег html (современный браузер и без него должен отобразить страницу) или просто будут ошибки, тогда на помощь приходят библиотеки. Из них я выбрал HtmlCleaner.

Под катом я расскажу, как подключить эту библиотеку, а также напишем простой парсер stackoverflow.com.
Читать дальше →
Всего голосов 51: ↑42 и ↓9 +33
Комментарии 12

Особенность работы класса AsyncTask

Время на прочтение 2 мин
Количество просмотров 7K
Разработка под Android *
В данной статье разговор пойдет об одной особенности класса AsyncTask, которая с первого взгляда не бросается в глаза, но может привести к нежелательным последствиям.
Читать дальше →
Всего голосов 30: ↑29 и ↓1 +28
Комментарии 6

Процессы и потоки в Android: пишем AsyncTask правильно

Время на прочтение 7 мин
Количество просмотров 119K
Разработка под Android *
Продолжаю свои повествования об Android. И в этот раз хочу поделиться ценной информацией о процессах и потоках, которая должна быть хорошо усвоена и всегда оставаться под рукой во избежании ошибок и недопонимания при написании приложений. В конце статьи приведу пример реализации AsyncTask, который загружает в ImageView картинку по нажатию на кнопку.
Читать дальше →
Всего голосов 28: ↑23 и ↓5 +18
Комментарии 27

Ожидание пользовательской реакции на Dialog в Android

Время на прочтение 3 мин
Количество просмотров 5K
Разработка под Android *
Из песочницы
Прежде чем что-то изобретать, я, конечно, погуглил (автор этого поста уже после выложил своё решение).
Дело в том, что в UI потоке нельзя ждать, а Activity предоставляет событийную модель работы с диалогами: по закрытию диалога вызывается общий обработчик с идентификатором диалога. Такой подход мне показался не очень удобным и я решил сделать все по-своему.
Читать дальше →
Всего голосов 23: ↑18 и ↓5 +13
Комментарии 13

Использование делегата для получения данных из AsyncTask

Время на прочтение 2 мин
Количество просмотров 1.7K
Разработка под Android *
Из песочницы
Всем привет!

Хочу поделится одним маленьким трюком для начинающих андроидописателей. Этот трюк стар как мир и сам я раньше многократно им пользовался, но поскольку основная моя работа с андроидом никак не связана, то за давностью лет я его подзабыл и вот на днях был вынужден его срочно вспоминать.
Читать дальше →
Всего голосов 16: ↑13 и ↓3 +10
Комментарии 17

Android. Выпадающий список (Spinner) с индикатором загрузки

Время на прочтение 5 мин
Количество просмотров 29K
Разработка под Android *
Из песочницы
Приветствую тебя, читатель!

Представляю твоему вниманию небольшой очерк о том, как захотелось мне видеть прогресс-бар («infinite circle») во время загрузки данных в выпадающий список, который в Андроиде называется Spinner.
Необходимость такая возникла при разработке небольшой утилиты по работе с веб-сервисом. Параметры некоего расчёта хранятся на централизованном сервере. Веб-сервис .NET отдаёт списки возможных параметров в виде массивов разной длины (от 2 до 50 элементов). Для отображения этих параметров и был выбран выпадающий список. Инициализация списков, как и положено, происходит асинхронно. И в то время, пока данные загружаются, смотреть на пустые статичные элементы безо всякого прогресса скучно, уныло и вообще.

Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 9

Асинхронная загрузка рисунков в TextView

Время на прочтение 3 мин
Количество просмотров 11K
Разработка под Android *
Ни для кого не секрет, что TextView в Android поддерживает HTML-теги. Среди них поддерживается и тег , а для его обработки используется класс ImageGetter. И если с отображением локальных графических файлов никаких проблем не возникает, то при попытке программно подгрузить удаленный рисунок в TextView мы получаем NetworkOnMainThreadException на Android версии 3.0 и выше. Как выяснилось, в поисковиках информации для решения этой проблемы находится мало, да и далеко не все из предлагаемых решений работоспособны. Тем не менее, рабочее решение существует.
Читать дальше →
Всего голосов 20: ↑15 и ↓5 +10
Комментарии 18

Чак Норрис и Google Glass — что общего, а вот…

Время на прочтение 4 мин
Количество просмотров 41K
Программирование *Java *
Недавно мне (несказанно поперло) выпал шанс купить Google Glass по Explorers Program. Стоило только заказать, как на следующее утро почтальон разбудил меня стуком в деверь — вам посылка. Не умываясь и не чистя зубы…

Под вечер возникла возможность попрограммировать. Изучив пару-тройку примеров и настроив окружение — я взялся за дело. Возникла идея написать приложение которое будет вытаскивать шутку про Чака Норриса из веб-сервиса, парсить JSON, и читать вслух.

Читать дальше →
Всего голосов 60: ↑47 и ↓13 +34
Комментарии 16

Написание MarkerInfoWindow для osmdroid

Время на прочтение 7 мин
Количество просмотров 5.5K
Разработка под Android *
Статья предназначена для тех, у кого трудности с подключением infoWindow в osmdroid и работой с AsyncTask и просто для тех, кто раньше не делал ничего подобного. Здесь я писал о том, как я создавал окошко для получения данных об автомобиле в сервисе мониторинга транспорта.
Суть в том, что при нажатии на маркер, некоторые данные берутся из объекта, другие данные подгружаются из API, записываются в БД приложения, после чего отображаются в объекте InfoWindow.

Начинаем с создания xml файла с описанием infoWindow, добавляем поля с заголовками критериев транспорта.
Читать дальше →
Всего голосов 17: ↑7 и ↓10 -3
Комментарии 6

Планирование задач в Android с использованием JobScheduler и IntentService

Время на прочтение 11 мин
Количество просмотров 34K
Программирование *Java *Разработка мобильных приложений *Разработка под Android *Промышленное программирование *
Туториал


Иногда при разработке под OS Android возникает необходимость выполнять ресурсоемкие операции периодически, регулярно или по запросу, и для этих операций важно, например, наличие интернета или чтобы устройство "не спало". Чаще всего при решении подобных задач применяются AlarmManager, WakefulBroadcastReceiver, либо же вообще WakeLock контролируется вручную. Все это не рекомендуется в документации для разработчиков под Android, а WakefulBroadcastReceiver уже отмечен как deprecated с API level 26.0.0.


Что же мы можем сделать, чтобы следовать рекомендациям Google и создавать приложения с более гибким поведением на версиях Android 5.0+, в которых энергосбережению уделяется все больше внимания? Если вы готовы выставить минимальный API level 21.0.0 для своего приложения, предлагаю под катом пример использования JobScheduler в связке с IntentService для последовательного выполнения трудоемких задач.

Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 10

Руководство по фоновой работе в Android. Часть 1

Время на прочтение 5 мин
Количество просмотров 26K
Блог компании EPAM Разработка под Android *
Перевод

О фоновой работе приложений в Android есть много статей, но мне не удалось найти подробного руководства по реализации работы в фоне – думаю, из-за того, что появляется все больше новых инструментов для такой работы. Поэтому я решил написать серию статей о принципах, инструментах и методах асинхронной работы в приложениях под Android.


Читать дальше →
Всего голосов 24: ↑24 и ↓0 +24
Комментарии 8

[Видео] Доклады с митапа Android Paranoid

Время на прочтение 8 мин
Количество просмотров 8.5K
Блог компании ЮMoney Java *Интерфейсы *Разработка под Android *Kotlin *
Android почти исполнилось десять лет.

Мы решили отметить это праздничным чаепитием со всеми, кто пришел в питерский офис Яндекса на второй митап Android Paranoid. Сказано — сделано. К нашему сожалению, маршмеллоу, шоколадное печенье и желейные бобы закончились еще 28 марта.



Вместо них — доклады, записанные на видео, и короткая выжимка полезной информации для Android-разработчиков. Под катом о том,

  • что происходит после нажатия на иконку приложения;
  • как перевести приложение на Kotlin и уместиться в 300 строк кода;
  • как менялись инструменты фоновой работы в Android;
  • как быстро получить анимации в RecyclerView.
Всего голосов 21: ↑19 и ↓2 +17
Комментарии 0

Как я ускорил обработку изображений на Android в 15 раз

Время на прочтение 7 мин
Количество просмотров 9.8K
Java *Разработка мобильных приложений *Kotlin *
Из песочницы

Как оптимизировать обработку изображений в рантайме, когда необходимо создать 6 изображений, каждое из которых состоит из последовательно наложенных 15-16 PNG, не получив OutOfMemoryException по дороге?


image

Читать дальше →
Всего голосов 37: ↑31 и ↓6 +25
Комментарии 23