Pull to refresh
0
0
Александр @KriopeG

Пользователь

Send message

Используем RxJava и Retrofit на Android, учитывая поворот экрана

Reading time11 min
Views55K

Решил я однажды таки попробовать дико популярный нынче Rx. А заодно и Retrofit. И посмотреть, как с их помощью реализовать стандартную задачу: получить с сервера набор данных, отобразить их и при этом ничего не терять при поворотах экрана и не делать лишних запросов. Первый вариант у меня получился сразу почти — просто взял и вызвал cache() на Observable, получаемый из синглтона, но он меня не устраивал — для принудительного обновления приходилось, по какой-то причине, пересоздавать экземпляры классов Retrofit и его же реализации моего интерфейса для API. Пересоздание же самого Observable эффекта не давало — всегда возвращались старые данные вместо запуска нового сетевого запроса и получения новых данных.


После долгих мучений с новой для себя технологией выяснил, что во всём был виновен cache() (точнее, наверное, моё неправильное оного понимание). В итоге сделал так: фрагмент запускает метод, подписывающий Subscriber синглтона на Observable retrofit-a, коий запускает onNext и onError BehaviorSubject-a, на который подписывается уже Subscriber фрагмента. Код на GitHub тут, подробности — под катом.

Читать без регистрации и СМС
Total votes 9: ↑8 and ↓1+7
Comments35

Подводные камни при релизе игры в Google Play и App Store

Reading time8 min
Views35K


Если вы разрабатываете игру под Android или iOS, рано или поздно вам придётся заняться подготовкой к публикации на Google Play и App Store. Но если вы ещё ни разу не релизили мобильную игру, многие вещи и правила могут оказаться неприятным сюрпризом и сильно замедлить процесс публикации.


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


  • Почему нельзя просто так взять скриншоты из игры и вставить их в описание?
  • Почему стоит ознакомиться с требованиями обоих сторов, даже если на данный момент релиз только на один из них?
  • К чему могут придраться на ревью в App Store и насколько это может затянуться?
  • Какие подводные камни ждут разработчика Free-to-play игры?
  • Почему пользователи Windows будут страдать при публикации в App Store?
  • Почему могут не работать тестовые платежи на iOS?
Читать дальше →
Total votes 32: ↑27 and ↓5+22
Comments57

300 потрясающих бесплатных сервисов

Reading time11 min
Views1.6M


Автор оригинальной статьи Ali Mese добавил ещё 100 новых бесплатных сервисов. Все 400 потрясающих сервисов доступны здесь. И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



A. Бесплатные Веб-Сайты + Логотипы + Хостинг + Выставление Счета

  • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
  • Bootswatch: Бесплатные темы для Bootstrap.
  • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
  • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
  • Strikingly.com Domain: Конструктор веб-сайтов.
  • Logaster: Онлайн генератор логотипов и элементов фирменного стиля (new).
  • Withoomph: Мгновенное создание логотипов (англ.).
  • Hipster Logo Generator: Генератор хипстерских логотипов.
  • Squarespace Free Logo: Можно скачать бесплатную версию в маленьком разрешении.
  • Invoice to me: Бесплатный генератор счета.
  • Free Invoice Generator: Альтернативный бесплатный генератор счета.
  • Slimvoice: Невероятно простой счет.

Читать дальше →
Total votes 341: ↑325 and ↓16+309
Comments107

Овладение Coordinator Layout

Reading time7 min
Views210K
На презентации Google I/O 15, компания Google представила новую версию библиотеки поддержки которая реализует несколько компонентов, сильно связанных со спецификациями Material Design, среди этих компонентов вы можете найти новые типы ViewGroup такие как AppbarLayout, CollapsingToolbarLayout и CoordinatorLayout.

При правильном комбинировании и настройке данные Viewgroup могут быть очень мощным инструментом, по этому я решил написать статью с некоторыми настройками и советами.
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments0

Crosswalk Project — замена Android WebView. Интеграция в проект

Reading time6 min
Views35K
CrosswalkProject

Эта статья откроет небольшой цикл из двух частей, посвященных интересному проекту под названием Crosswalk Project. В них я затрону вопросы интеграции Crosswalk в Android приложение и использовании его как замену системного WebView в обычном приложении.

Под «обычным» я подразумеваю классический проект на Java с использованием Android SDK, в противовес HTML5 приложениям и нативному C++ коду. А т.к. Crosswalk в основном используется как runtime запуска HTML5 приложений, то, чтобы не путаться в терминах, буду называть этот проект обычным.

В первой части я хочу рассказать непосредственно об интеграции Crosswalk в Android приложение и использовании Crosswalk WebView вместо системного Android WebView. Во второй части я опишу некоторые нюансы и сложности в работе с Crosswalk при интеграции, а также сделаю общие выводы.
Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments4

Push уведомления в Android с помощью Firebase Cloud Messaging для начинающих

Reading time2 min
Views140K
Не так давно Google купили Firebase и теперь на странице с описанием GCM нас встречает радостная новость о том, что пора бы мигрировать на Firebase.
...GCM users are strongly recommended to upgrade to FCM, in order to benefit from new FCM features today and in the future.

В этой статье мы разберем тестовый проект и рассмотрим один подводный камень связанный с иконкой уведомления.

Нам понадобится:

  • Android Studio
  • Код демо-проекта с github
  • 20 минут свободного времени
Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments18

Дайджест интересных материалов для мобильного разработчика #149 (11-17 апреля)

Reading time3 min
Views12K
В этот раз получилось очень много самых интересных материалов — про причины провалов приложений, про взлом iPhone, про секреты Android Studio, про боты и HTML5-игры, про сложные и уродливые интерфейсы, конкурсы и новые API и многое-многое другое. Хороших вам приложений!

Читать дальше →
Total votes 15: ↑12 and ↓3+9
Comments3

AES шифрование и Android клиент

Reading time7 min
Views43K


Как говорится, ничего не предвещало беды. Мобильный клиент потихоньку пилился, кофе стыл, задачки закрывались одна за другой, пока вдруг внезапно не пришло письмо на корпоративную почту:

Срочно внедряем новый функционал. Все необходимые параметры для построения бизнес модели, в целях безопасности, будут передаваться в зашифрованном виде AES/CBC/PKCS5Padding с вектором инициализации AAACCCDDDYYUURRS и ключом шифрования ZZHHYYTTUUHHGGRR. Пример зашифрованных данных:

p+oJjsGEULNSptP5Sj1BM5w65hMjkqzahORd8ybIkqyJD0V/608c1tYuKIvDLUIa
RQ9jQ6+EwbyMFjlMa6xuEnxOx4sez001hd3NsLO7p00XoTqAvi9zwUBII+
nPphP6Zr0P4icvODpmhlmRILgSBsUf1H/3VN1lNXjo4LTa
GxLqW3VSg9iV9yFq4VMWqsRF

Попытки быстрого поиска решения выдали кучу неработающих примеров показали, что задача выходит за рамки привычной верстки layout’ов и написания Presenter’ов и требует изучения доков и чтения мануалов. Отличная возможность изучить что-то новое и обогатить свой опыт.

Но для начала, давайте разберемся, что же это такое — шифрование и зачем оно вообще нужно.
Читать дальше →
Total votes 12: ↑9 and ↓3+6
Comments12

Построение Android приложений шаг за шагом, часть первая

Reading time8 min
Views146K


В этой статье мы поговорим о проектировании архитектуры и создании мобильного приложения на основе паттерна MVP с использованием RxJava и Retrofit. Тема получилась довольно большой, поэтому подаваться будет отдельными порциями: в первой мы проектируем и создаем приложение, во второй занимаемся DI с помощью Dagger 2 и пишем тесты unit тесты, в третьей дописываем интеграционные и функциональные тесты, а также размышляем о TDD в реалиях Android разработки.
Читать дальше →
Total votes 32: ↑27 and ↓5+22
Comments48

Расширяемый код Android-приложений с MVP

Reading time7 min
Views51K
От переводчика: — я давненько интересуюсь тем, как сделать код Android-приложений чище, и это, наверное, первая статья, после которой у меня не возникло мыслей: "Зачем вот это вот все?" и "Он вообще пробовал когда-то это использовать в жизни?" Поэтому решил перевести, может, еще кому-то будет полезно.

Написать Hello World всегда легко. Код выглядит просто и прямолинейно, и кажется, что SDK очень адаптирована под ваши нужды. Но если у вас есть опыт написания более сложных Android-приложений, вы знаете, что с рабочим кодом все не так. Можно провести часы за попыткой понять, почему ваша корзина покупок не обновляется после изменения ориентации телефона, если недоступен WiFi. Вы предполагаете, что решением проблемы, возможно, будет добавить ещё один if в 457-строчном методе onCreate() вашей активити — где-то между тем кодом, который исправляет падение на самсунгах с Android 4.1 на борту, и тем, который показывает купон на 5$ в день рождения пользователя. Что ж, есть способ получше.

Мы в Remind (прим. пер. — название компании, где работает автор) выкатываем новые функции каждые две недели, и для того чтобы поддерживать эту скорость и высокое качество продукта, нужен способ сохранять код простым, поддерживаемым, разделённым (прим. пер. — "decoupled", в смысле слабой связанности) и тестируемым. Использование архитектурного паттерна MVP позволяет нам делать это и сосредоточиваться на самой значимой части нашего кода — нашей бизнес-логике.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments9

Перехватываем всё с помощью CoordinatorLayout Behavior

Reading time8 min
Views46K
Предлагаю вашему вниманию перевод статьи Ian Lake Intercepting everything with CoordinatorLayout Behaviors.

Вы не продвинетесь далеко в изучении Android Design Support Library, не столкнувшись с CoordinatorLayout. Множество View из Design Library требуют CoordinatorLayout. Но почему? Сам по себе CoordinatorLayout делает не так уж и много, если использовать его с View, входящими в состав Android фреймворка, то он будет работать, как обычный FrameLayout. Так откуда берётся вся его магия? Вот где на сцену выходит CoordinatorLayout.Behavior. Подключив Behavior к дочерней View у CoordinatorLayout, вы сможете перехватывать касания, оконные вставки (window insets), изменения размеров и макета (measurement и layout), а также вложенную прокрутку. Design Library широко использует Behavior чтобы добавить силу большинству функционалу, которую вы видите.


Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments0

Полноценный REST API для перфекционистов за 5 минут

Reading time15 min
Views233K


Привет, Хабр! Меня зовут Владимир, мне 28 лет и я наркоман наркоман. Мой наркотик – простота. На простоту я подсел из-за своего перфекционизма, которым меня наградили при рождении.

Врачи говорят, что это взаимосвязано, мол перфекционизм — это стремление к совершенству, а простота позволяет подобраться к этому мифическому совершенству. Чем проще решение, тем меньше ошибок можно допустить, вот я и подсел. Я не стал с ними спорить и вместо того, что бы искать виновников моей истории, решил с этим жить и постараться повысить качество этой самой жизни.

Мир вокруг не идеален, сложную вещь сделать простой – невероятно сложно, поэтому всё чрезмерно усложнено. Людям нравится чувствовать себя профессионалами, поэтому они оперируют сложными терминами, когда в этом нет необходимости, так они ощущают свою значимость и заполняют пустоту, которая образовалась из-за страха потерянного времени.
Читать дальше →
Total votes 49: ↑41 and ↓8+33
Comments78

Немного об архитектурах программного обеспечения

Reading time7 min
Views64K


Никаких сомнений, что за последнее время мир только укрепил свою зависимость от программного обеспечения. Приложения должны обладать высокой доступностью, качественно выполнять требуемые функции и иметь адекватную стоимость. Эти характеристики, в той или иной степени, определяет архитектура ПО.
Читать дальше →
Total votes 21: ↑18 and ↓3+15
Comments2

Руководство по HTML/CSS/JavaScript

Reading time13 min
Views212K

Frontend Guidelines

Правила и руководства оформления, форматирования HTML, СSS и JavaScript кода. Его цель — повысить качество кода и облегчить совместную работу и поддержку инфраструктуры.

От переводчика

Приветствую всех снова, меня зовут Максим Иванов, и сегодня я подготовил перевод, который, возможно, окажется для вас полезным. Бенджамин Де Кук (Benjamin De Cock), разработчик из Бельгии, собрал некоторые указания по оформлению кода, которые позиционируют себя как лучшие практики по написанию HTML, CSS, JS. Конечно, существует множество рекомендаций, например, есть хороший гайдлайн от Google, наверное, есть еще что-то, однако, если следовать хотя бы некоторым из них, то можно надеяться, что ваш код станет лучше. В отдельных случаях следование этим гайдлайнам не полезно, а совсем наоборот. В общем и целом, все зависит от вашего опыта и виденья дела, если вы новичок, то скорее вам будет полезно оценить то, что пишут другие и в обществе считается верным, если вы гуру, то наверное вам и не нужны гайдлайны, которые написаны непонятно кем на ваш взгляд. Итак, приступим.
Читать дальше →
Total votes 38: ↑29 and ↓9+20
Comments38

Подборка: Более 800 ресурсов для front-end-разработчиков

Reading time24 min
Views107K
Мы продолжаем публиковать подборки полезных инструментов. Ниже представлена подборка из более 800 сервисов, книг, статей, видеотуториалов и других материалов, которые будут полезны всем, кто занимается фронтенд-разработкой.

Читать дальше →
Total votes 59: ↑35 and ↓24+11
Comments10

Gradle: управляя зависимостями

Reading time10 min
Views132K
Управление зависимостями – одна из наиболее важных функций в арсенале систем сборки. С приходом Gradle в качестве основной системы сборки Android-проектов в части управления зависимостями произошёл существенный сдвиг, закончилась эпоха ручного копирования JAR-файлов и долгих танцев с бубном вокруг сбоящих конфигураций проекта.



В статье рассматриваются основы управления зависимостями в Gradle, приводятся углублённые практические примеры, небольшие лайфхаки и ссылки на нужные места в документации.

Внимание много текста и изображений
Total votes 22: ↑20 and ↓2+18
Comments60

Google Developer Launchpad — программа Google для стартапов

Reading time4 min
Views19K
Хабр, привет! Не так давно мы уже делились информацией о программе для стартапов от Google, — Google Developers Launchpad. Сейчас мы бы хотели подробнее рассказать о возможностях и преимуществах этой программы.



Программа Launchpad разделена на две стадии (или уровня) — Start и Scale. Участие в Launchpad’е является бесплатным, а у самой программы нет каких-то временных ограничений, хотя мы надеемся, что вы максимально быстро сможете из стартапа вырасти в приносящую прибыль кампанию (кому-то на это требуется 1-2 года, а кому-то и 5 лет мало, всё зависит от того, чем вы занимаетесь).
Android-стартапы, мы ждём вас!
Total votes 13: ↑13 and ↓0+13
Comments4

Разработка быстрых мобильных приложений на Android. Часть вторая

Reading time14 min
Views32K
В Edison мы часто сталкиваемся с оптимизацией мобильных приложений и хотим поделиться материалом, который считаем крайне полезным, если вы решаете одну из двух задач: а) хотите чтобы приложение меньше тормозило; б) хотите сделать красивый, мягкий и гладкий интерфейс для массового пользователя.

Предлагаем вашему вниманию первую часть перевода статьи Udi Cohen, которую мы использовали как пособие для обучения молодых коллег оптимизации под Android.

(Читать первую часть)


Читать дальше →
Total votes 26: ↑25 and ↓1+24
Comments5

50 лучших инструментов для разработки CSS и JavaScript

Reading time3 min
Views74K
Веб-разработчику постоянно необходимо быть в курсе появления новых библиотек и инструментов. Я нашёл и выбрал несколько лучших инструментов для разработки как CSS, так и JavaScript. Это не просто копипаста – это выборка, основанная как на рекомендациях, так и на личном опыте использования.

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

Лучшие инструменты для CSS и JavaScript


1) Fileicone

Сборник 100%-CSS файловых иконок. Может пригодиться для дизайна страниц.

image

2) Marx

Элегантное обнуление CSS безо всякого JavaScript.

image
Читать дальше →
Total votes 54: ↑36 and ↓18+18
Comments17

Marshmallow. Это должен сделать каждый. Добавляем поддержку SDK 23 в наши приложения

Reading time6 min
Views35K
Мне повезло стать Google Developer Expert Android в России, и поэтому я вдвойне переживаю, что не все из вас подготовились к релизу заранее. Сейчас мы с вами постараемся запрыгнуть на уплывающий пароход с зефирками.

Вы можете не читать, а просто посмотреть мой доклад на прошедшем DroidCon.

Но специально для тех, кто любит читать хабр больше чем смотреть youtube — добро пожаловать под кат. Там мы пройдемся по чеклисту действий, которые каждый обязательно должен сделать в своем приложении, а потом посмотрим на новые возможности для разработчиков в sdk 23.
Читать дальше →
Total votes 25: ↑23 and ↓2+21
Comments3

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity