О фоновой работе приложений в Android есть много статей, но мне не удалось найти подробного руководства по реализации работы в фоне – думаю, из-за того, что появляется все больше новых инструментов для такой работы. Поэтому я решил написать серию статей о принципах, инструментах и методах асинхронной работы в приложениях под Android.
Aleksei Bespaly @Alexey_Bespaly
Senior Developer
Dagger 2 для начинающих Android разработчиков. Dagger 2. Часть 1
7 min
64KTranslation
Данная статья является четвертой частью серии статей, предназначенных, по словам автора, для тех, кто не может разобраться с внедрением зависимостей и фреймворком Dagger 2, либо только собирается это сделать. Оригинал написан 10 декабря 2017 года. Перевод вольный.
![image](https://habrastorage.org/getpro/habr/post_images/b9f/c21/449/b9fc21449f6b48f4e9518486148121c4.jpg)
![image](https://habrastorage.org/getpro/habr/post_images/b9f/c21/449/b9fc21449f6b48f4e9518486148121c4.jpg)
+4
Заблуждения Clean Architecture
15 min
424K![Превращаем круги в блоки](https://habrastorage.org/web/fe8/c82/a32/fe8c82a32b1548b1a297187e24ae755a.png)
На первый взгляд, Clean Architecture – довольно простой набор рекомендаций к построению приложений. Но и я, и многие мои коллеги, сильные разработчики, осознали эту архитектуру не сразу. А в последнее время в чатах и интернете я вижу всё больше ошибочных представлений, связанных с ней. Этой статьёй я хочу помочь сообществу лучше понять Clean Architecture и избавиться от распространенных заблуждений.
+54
Рецепты под Android: Как вкусно приготовить LayoutManager
16 min
48KTutorial
Привет хабр!
Мы любим разрабатывать мобильные приложения, отличающиеся от своих собратьев как по функциям, так и по пользовательскому интерфейсу. В прошлый раз мы рассказали о клиент-серверном взаимодействии в одном из наших приложений, а в этот раз поделимся реализацией его UI фичи с помощью написанного с нуля LayoutManager. Думаем, что статья будет полезна не только начинающим андроид-разработчикам, но и более продвинутым специалистам.
![](https://habrastorage.org/getpro/habr/post_images/872/ce9/826/872ce98265b171e705cc2340ed9487ce.png)
Мы любим разрабатывать мобильные приложения, отличающиеся от своих собратьев как по функциям, так и по пользовательскому интерфейсу. В прошлый раз мы рассказали о клиент-серверном взаимодействии в одном из наших приложений, а в этот раз поделимся реализацией его UI фичи с помощью написанного с нуля LayoutManager. Думаем, что статья будет полезна не только начинающим андроид-разработчикам, но и более продвинутым специалистам.
![](https://habrastorage.org/getpro/habr/post_images/872/ce9/826/872ce98265b171e705cc2340ed9487ce.png)
+33
История создания простой мобильной игры
11 min
27KПривет! Мы — небольшая команда из двух человек, которая пытается делать игры в свободное время. Совсем недавно мы наконец-то зарелизили свое первое скромное творение и решили поделиться опытом его создания с хабрасообществом.
![](https://habrastorage.org/files/d2a/861/18c/d2a86118cef641848fc2b32e7e50e147.jpg)
“У всех есть свои раннеры, а чем мы хуже? Мы тоже сможем запилить за месяц крайне простую игру для телефонов”, — подумали мы немногим больше года назад, и все завертелось.
Мы нарисовали пару скетчей, написали диздок на 2 листа и взяли Unity, с которым у нас уже был небольшой опыт работы. Решив, что справимся с простым раннером примерно за месяц-два, приступили к работе.
Осторожно, под катом довольно много картинок!
![](https://habrastorage.org/files/d2a/861/18c/d2a86118cef641848fc2b32e7e50e147.jpg)
“У всех есть свои раннеры, а чем мы хуже? Мы тоже сможем запилить за месяц крайне простую игру для телефонов”, — подумали мы немногим больше года назад, и все завертелось.
Мы нарисовали пару скетчей, написали диздок на 2 листа и взяли Unity, с которым у нас уже был небольшой опыт работы. Решив, что справимся с простым раннером примерно за месяц-два, приступили к работе.
Осторожно, под катом довольно много картинок!
+48
Обзор Android Shortcuts
8 min
28KTutorial
С версии ОС Android 7.1 (API 25) Google предлагает нам новый механизм работы с приложениями — Android Shortcuts. Мы написали краткий обзор этой фичи, созданной для удобства пользователей.
В переводе с английского «shortcut» — кратчайший путь, такое название хорошо отражает основное предназначение шорткатов. Они позволяют нам попасть в какую-то определенную точку приложения и выполнить конкретное действие всего за пару нажатий. Шорткаты неплохо смотрятся, например, если пользователю надо:
• выбрать заранее определенный маршрут в навигаторе;
• начать беседу с другом в мессенджере;
• продолжить игру с последней точки сохранения.
![image](https://habrastorage.org/files/206/118/c89/206118c8903a46aaa3e5bcc36172243b.png)
Общий обзор
В переводе с английского «shortcut» — кратчайший путь, такое название хорошо отражает основное предназначение шорткатов. Они позволяют нам попасть в какую-то определенную точку приложения и выполнить конкретное действие всего за пару нажатий. Шорткаты неплохо смотрятся, например, если пользователю надо:
• выбрать заранее определенный маршрут в навигаторе;
• начать беседу с другом в мессенджере;
• продолжить игру с последней точки сохранения.
+31
Манифест архитектурной боли
3 min
11KВсем привет! Это будет необычная статья. Это будет статья-манифест! Манифест архитектурной боли! Хватит это терпеть, хватит это держать в себе. Возьми и скажи все, что думаешь об архитектуре. Все, что думаешь о «чистой архитектуре»! Все, все, все! От начинающих до неудержимых гиков.
Все под кат!
![image](https://habrastorage.org/files/2d1/5bf/f23/2d15bff23544479eacfb4f738f9b02a5.png)
Все под кат!
![image](https://habrastorage.org/files/2d1/5bf/f23/2d15bff23544479eacfb4f738f9b02a5.png)
+2
5 вещей, которых вы не знали о многопоточности
10 min
292KTranslation
Хоть от многопоточности и библиотек, которые её поддерживают, отказываются немногие Java-программисты, но тех, кто нашёл время изучить вопрос в глубину ещё меньше. Вместо этого мы узнаём о потоках только столько, сколько нам требуется для конкретной задачи, добавляя новые приёмы в свой инструментарий лишь тогда, когда это необходимо. Так можно создавать и запускать достойные приложения, но можно делать и лучше. Понимание особенностей компилятора и виртуальной машины Java поможет вам писать более эффективный, производительный код.
В этом выпуске серии «5 вещей …», я представлю некоторые из тонких аспектов многопоточного программирования, в том числе synchronized-методы, volatile переменные и атомарные классы. Речь пойдет в особенности о том, как некоторые из этих конструкций взаимодействуют с JVM и Java-компилятором, и как различные взаимодействия могут повлиять на производительность приложений.
В этом выпуске серии «5 вещей …», я представлю некоторые из тонких аспектов многопоточного программирования, в том числе synchronized-методы, volatile переменные и атомарные классы. Речь пойдет в особенности о том, как некоторые из этих конструкций взаимодействуют с JVM и Java-компилятором, и как различные взаимодействия могут повлиять на производительность приложений.
+68
Ресурсы, о которых должен знать каждый Android-разработчик
6 min
189KTranslation
Сегодня я хочу поделиться с вами моим вольным переводом статьи, написанной Сергеем Повзнером (Sergey Povzner). Сергей ведёт блог bongizmo.com и занимается разработкой туристических гидов под общим названием Citybot.
В то время как Android продолжает свой невероятный рост, всё больше и больше программистов начинают разрабатывать приложения на этой платформе. Если ты начинаешь свой путь сегодня, то ты определенно — счастливчик. За последние годы Android значительно повзрослел и избавился от множества детских болезней. Информации по платформе более чем достаточно. Я же расскажу о самых важных ресурсах.
Статья будет полезна как новичкам, так и опытным разработчикам. Это гид по миру Android-разработки.
В то время как Android продолжает свой невероятный рост, всё больше и больше программистов начинают разрабатывать приложения на этой платформе. Если ты начинаешь свой путь сегодня, то ты определенно — счастливчик. За последние годы Android значительно повзрослел и избавился от множества детских болезней. Информации по платформе более чем достаточно. Я же расскажу о самых важных ресурсах.
Статья будет полезна как новичкам, так и опытным разработчикам. Это гид по миру Android-разработки.
+123
Сверхбыстрое распознавание речи без серверов на реальном примере
10 min
332KTutorial
В этой статье я подробно расскажу и покажу, как правильно и быстро прикрутить распознавание русской речи на движке Pocketsphinx (для iOS порт OpenEars) на реальном
Почему именно домашней техникой? Да потому что благодаря такому примеру можно оценить ту скорость и точность, которой можно добиться при использовании полностью локального распознавания речи без серверов типа Google ASR или Яндекс SpeechKit.
К статье я также прилагаю все исходники программы и саму сборку под Android.
+179
Первые впечатления от разработки под Андроидом — пишем handsfree
4 min
8.6KСовсем недавно обзавелся андрофоном (LG Optimus) и решил попробовать свои силы в написании софта под него. Почитав про устройство платформы сначала очень порадовался за ее простоту, удобство и логичность. Но на практике все оказалось далеко не так радужно…
В качестве пробы пера взялся за приложение, которое автоматически отвечало бы на входящие звонки при подключенной гарнитуре. Странно, конечно, что такой простой функции нет в системе «из коробки». Да и в маркете нашлось всего одно приложение, умеющее это делать, причем не слишком надежное. Попробуем исправить это недоразумение.
На первый взгляд, приложение должно быть очень простым:
С первым пунктом особых проблем не возникло. А вот остальные два оказались не такими тривиальными.
В качестве пробы пера взялся за приложение, которое автоматически отвечало бы на входящие звонки при подключенной гарнитуре. Странно, конечно, что такой простой функции нет в системе «из коробки». Да и в маркете нашлось всего одно приложение, умеющее это делать, причем не слишком надежное. Попробуем исправить это недоразумение.
На первый взгляд, приложение должно быть очень простым:
- В манифесте вешаем receiver на сообщения об изменении статуса линии (TelephonyManager.ACTION_PHONE_STATE_CHANGED) и следим за входящими звонками.
- При поступлении звонка проверяем, подключена ли гарнитура. Меня интересовала, прежде всего, bluetooth, но и проводную гарнитуру было бы хорошо отслеживать.
- Если гарнитура подключена, говорим телефону ответить на звонок.
С первым пунктом особых проблем не возникло. А вот остальные два оказались не такими тривиальными.
+27
Подготовка к экзамену Oracle Certified Professional Java Programmer — Часть 1
8 min
57KПредисловие
Хочу продолжить делиться приобретенными знаниями и своими впечатлениями от подготовки к экзамену. Огромное спасибо всем тем, кто дал рекомендации к нулевой части этой серии! Сегодня я поговорю еще немножко о модификаторах доступа и их взаимоотношениях с наследованием и пакетами, рассмотрю varargs и перечисления, а также массивы и способы их инициализации. Я надеюсь, что хабражители снова откликнутся и дополнят то, о чем я забыл упомянуть или попросту не знал.
Продолжаем готовиться к экзамену под катом.
+31
Как я писал кастомный локер
11 min
35K![](https://habrastorage.org/getpro/habr/post_images/7a4/b1b/824/7a4b1b824294dbe02e93eb67d2078cb3.png)
Привет хабрастарожилам от хабрановичка. Ровно год назад я решил написать кастомный локер (экран блокировки) для моего старичка Samsung Galaxy Gio в стиле популярного тогда Samsung Galaxy s3. Какие причины заставили меня это сделать, писать не буду, но добавлю лишь то, что в Google Play я программу не собирался выкладывать и каким-либо другим способом заработать на ней не планировал. Данный пост посвящен последствиям моего решения.
+31
Видео. Основные принципы Material Design
1 min
75KНе секрет что Material Design уже очень сильно нашумел в сети, и заинтересовал не малую аудиторию своей задумкой. А ведь и вправду Material Design показал как нужно правильно строить UI, который был бы понятен пользователю как что-то материальное, что он может потрогать.
![](https://habrastorage.org/files/111/069/497/1110694977a847729a8746428a3a056f.jpg)
![](https://habrastorage.org/files/111/069/497/1110694977a847729a8746428a3a056f.jpg)
+15
Борьба с 2D-физикой в Unity на примере бесконечной игры
9 min
83KTutorial
Мой странный творческий путь занес меня в разработку игр. Благодаря отличной студенческой программе от IT-компании, название которой СостоИт из одной Греческой МАленькой буквы, сотрудничающей с нашим университетом, удалось собрать команду, родить документацию и наладить Agile разработку игры под присмотром высококлассного QA-инженера (здравствуйте, Анна!)
Без особо долгих размышлений, в качестве движка был выбран Unity. Это замечательный движок, на котором действительно быстро и легко можно сделать очень плохую игру, в которую, в здравом уме, никто и никогда не будет играть. Чтобы создать хорошую игру, все же придется перелопатить документацию, вникнуть в некоторые особенности и набраться опыта разработки.
Наша игра использовала физический движок неожиданным для него способом, что породило множество проблем с производительностью на мобильных платформах. В этой статье, на примере нашей игры, описана моя борьба с физическим движком и все те особенности его работы, которые были замечены на пути к жизнеспособной бета-версии.
+42
Ещё раз (надеюсь, последний) про double-checked locking
4 min
52KСтатей про double-checked locking на Хабре было столько, что казалось бы ещё одна — и Хабр лопнет. Вот только по Java неплохие публикации: Реализация Singleton в JAVA, Правильный Singleton в Java, А как же всё-таки работает многопоточность? Часть II: memory ordering или вот замечательный пост от TheShade (слава web-archive!). В наши дни, наверно, каждый Java-разработчик слышал, что если используешь DCL, будь добр объявить переменную volatile. Найти сегодня в коде известных опенсорсных проектов DCL без volatile довольно трудно, но оказалось, что проблемы ещё не полностью решены. Поэтому я добавлю небольшую заметку по теме с примерами из реальных проектов.
Иногда складывается ощущение, что программисты не включают мозги и не пытаются понять, как что работает, а просто следуют простым и понятным правилам вроде «объяви переменную volatile, используй DCL, и всё будет хорошо». К сожалению, такой подход в программировании не всегда работает.
Иногда складывается ощущение, что программисты не включают мозги и не пытаются понять, как что работает, а просто следуют простым и понятным правилам вроде «объяви переменную volatile, используй DCL, и всё будет хорошо». К сожалению, такой подход в программировании не всегда работает.
+44
Что такое утечки памяти в android, как проверить программу на их отсутствие и как предотвратить их появление
14 min
88KTutorial
В этой статье для начинающих android-разработчиков я постараюсь рассказать о том, что такое «утечки памяти» в android, почему о них стоит думать на современных устройствах, выделяющих по 192МБ на приложение, как быстро найти и устранить эти утечки в малознакомом приложении и на что нужно обращать особое внимание при разработке любого приложения.
![](https://habrastorage.org/files/fbb/3f3/010/fbb3f301061d4c8ca6319e541662e722.png)
Конечная цель этой статьи — ответ на простой вопрос:
Куда нажать, чтобы узнать, какую строчку в приложении поправить?
![](https://habrastorage.org/files/fbb/3f3/010/fbb3f301061d4c8ca6319e541662e722.png)
Конечная цель этой статьи — ответ на простой вопрос:
Куда нажать, чтобы узнать, какую строчку в приложении поправить?
+63
Встреча с кометой сегодня
3 min
150KДва года назад состоялась невероятная посадка марсохода Curiosity на Марс, а сегодня происходит не менее сложное и важное событие в Солнечной системе — космический аппарат Rosetta, после десятилетнего перелета, выходит на орбиту кометы 67P/Чурюмова-Герасименко.
![ESA_ROSETTA_NAVCAM ESA_ROSETTA_NAVCAM](https://habrastorage.org/getpro/geektimes/post_images/66c/638/b66/66c638b6608f80a6bf923edb1ff61636.gif)
Я постараюсь максимально оперативно сообщать о том, как проходит эта операция в 400 миллионах километров от Земли.
![ESA_ROSETTA_NAVCAM ESA_ROSETTA_NAVCAM](https://habrastorage.org/getpro/geektimes/post_images/66c/638/b66/66c638b6608f80a6bf923edb1ff61636.gif)
Я постараюсь максимально оперативно сообщать о том, как проходит эта операция в 400 миллионах километров от Земли.
+157
Офис компании «ВКонтакте»
6 min
221K На днях нас с коллегами случайно занесло в северную столицу, где не менее случайно нам удалось побывать в самом, пожалуй, необычном офисе города. Наличие фотоаппарата позволило частично передать вам ту атмосферу, которая царит в этом месте — осторожно, много фоток!
![image](https://habrastorage.org/getpro/geektimes/post_images/c18/578/aa4/c18578aa43813faf11bb757aa2e68075.jpg)
![image](https://habrastorage.org/getpro/geektimes/post_images/c18/578/aa4/c18578aa43813faf11bb757aa2e68075.jpg)
+216
FAQ по программированию под Android от новичка, и для новичков
16 min
158KПредисловие к FAQ.
Программирование является моим хобби уже давно (правда на других языках и платформах), но до андроида руки дотянулись совсем недавно. Прошло несколько этапов, прежде чем я добрался до написания программ.
Сначала была пара месяцев посвященных Java, на сайте с «Сгибателем».
После, долгие попытки подружится с Eclipse, закончившиеся побегом на Android Studio.
На данный момент выпущено 7 программ и две находятся в разработке.
Данная подборка возникла как попытка структурирования и оптимизации полученной в процессе информации.
Заранее извиняюсь за возможно некорректную терминологию – так как практикую обучение через создание, и в теоретической части есть пробелы.
Надеюсь, что приведенные примеры окажутся полезными.
Программирование является моим хобби уже давно (правда на других языках и платформах), но до андроида руки дотянулись совсем недавно. Прошло несколько этапов, прежде чем я добрался до написания программ.
Сначала была пара месяцев посвященных Java, на сайте с «Сгибателем».
После, долгие попытки подружится с Eclipse, закончившиеся побегом на Android Studio.
На данный момент выпущено 7 программ и две находятся в разработке.
Данная подборка возникла как попытка структурирования и оптимизации полученной в процессе информации.
Заранее извиняюсь за возможно некорректную терминологию – так как практикую обучение через создание, и в теоретической части есть пробелы.
Надеюсь, что приведенные примеры окажутся полезными.
+82
Information
- Rating
- Does not participate
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity