Pull to refresh
0
0

User

Send message

Советы для профессионального использования RecyclerView. Часть 1

Reading time3 min
Views11K

Советы для профессионального использования RecyclerView. Часть 1


Я решил написать эту статью, т.к. заметил, что многие разработчики допускают ошибки при использовании RecyclerView, даже несмотря на то, что Google уже довольно давно его выпустила.


Описанные здесь пункты упоминались в различных докладах и материалах на Google Devs.


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

Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments4

Лицензия на вождение болида, или почему приложения должны быть Single-Activity

Reading time14 min
Views60K

image


На AppsConf 2018, которая прошла 8-9 октября, я выступил с докладом про создание андроид-приложений целиком в одном Activity. Хотя тема известная, существует много предубеждений относительно такого выбора — переполненный зал и количество вопросов после выступления тому подтверждение. Чтобы не ждать видеозаписи, я решил сделать статью с расшифровкой выступления.



О чем я расскажу


  1. Почему и зачем надо переходить на Single-Activity
  2. Универсальный подход для решения задач, которые вы привыкли решать на нескольких Activity
  3. Примеры стандартных бизнес задач
  4. Узкие места, где обычно подпирают код, а не делают все честно
Читать дальше →
Total votes 43: ↑40 and ↓3+37
Comments81

Android LiveData на Kotlin с использованием Retrofit и coroutines

Reading time6 min
Views21K
Статья рассказывает об использовании Android Components ViewModel, LifeCycle и LiveData. Эти компоненты позволяют не заботиться о жизненном цикле Activity.

Так же рассмотрен пример применения современного Coroutines в связке с репозитарием на Retrofit

fun main(args: Array<String>): Unit = runBlocking {
    // Wait (suspend) for Result
    val result: Result<User> = api.getUser("username").awaitResult()
    // Check result type
    when (result) {
        //Successful HTTP result
        is Result.Ok -> saveToDb(result.value)
        // Any HTTP error
        is Result.Error -> log("HTTP error with code ${result.error.code()}", result.error)
        // Exception while request invocation
        is Result.Exception -> log("Something broken", e)
    }
}
Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments3

Как работает Android, часть 4

Reading time26 min
Views94K


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

Читать дальше →
Total votes 51: ↑51 and ↓0+51
Comments25

Советы для профессионального использования RecyclerView. Часть 2

Reading time4 min
Views8.2K

Советы для профессионального использования RecyclerView. Часть 2


Продолжая предыдущую статью, в этой я расскажу про ItemDecoration и ItemAnimator и постараюсь объяснить принцип их работы в RecyclerView на примере простого приложения, которое доступно на Github.

Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments1

Робот-пылесос: 10 основных критериев выбора

Reading time6 min
Views18K
Несколько десятилетий назад появление на рынке бытовой техники моющих пылесосов считалось настоящим прорывом. Они существенно облегчали уборку, завоевав тем самым небывалую популярность. Ситуация изменилась, когда на смену им пришли роботы-пылесосы. Этот вид интеллектуальной бытовой техники изначально считался дорогой игрушкой, от которой не слишком много пользы. Осознание того, что робот-пылесос – функциональная вещь, которая превращает процесс уборки в сказку, пришло после того, как ассортимент этой техники значительно расширился, и на рынке бытовой техники появились модели разных производителей, ценовых категорий и функциональности.

Сегодня выбрать робот-пылесос среди большого количества вариантов весьма непросто. Вот основные критерии, которые следует учитывать при покупке интеллектуального оборудования для дома.
Читать дальше →
Total votes 10: ↑2 and ↓8-6
Comments6

«Hello World!» на C массивом int main[]

Reading time5 min
Views46K
Я хотел бы рассказать о том, как я писал реализацию «Hello, World!» на C. Для подогрева сразу покажу код. Кого интересует как до этого доходил я, добро пожаловать под кат.

#include <stdio.h>
const void *ptrprintf = printf;
#pragma section(".exre", execute, read)
__declspec(allocate(".exre")) int main[] =
{
    0x646C6890, 0x20680021, 0x68726F57,
    0x2C6F6C6C, 0x48000068, 0x24448D65,
    0x15FF5002, &ptrprintf, 0xC314C483
};

Реализация
Total votes 114: ↑108 and ↓6+102
Comments143

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

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



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

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

9 секретов онлайн-платежей. Часть 1: настройка 3-D Secure

Reading time7 min
Views63K
imageРоссийский рынок e-commerce живет в условиях кризиса, сейчас то время, когда одной из ключевых задач для успешного «выживания» является настройка всех «винтиков» механизма вашего сайта. Один из таких «винтиков» — это сервис приема онлайн-платежей на сайте. При правильном подходе он может стать фактором успеха, а при неверном использовании — привести к серьезным проблемам. В данном выпуске, первом из серии «9 секретов онлайн-платежей», содержащей восьмилетний опыт работы команды PayOnline, мы поделимся правилами настройки протокола 3-D Secure для успешной обработки платежей на вашем сайте.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments18

Android. Автозапуск приложения при загрузке: теория и практика

Reading time7 min
Views97K
Простой поиск на stackoverflow.com показывает, что тема получения сообщения ACTION_BOOT_COMPLETED остается актуальной и по сей день. Как видно, многие новички сталкиваются с проблемой: они не получают в своих приложениях сообщение ACTION_BOOT_COMPLETED. В этой статья я попробую резюмировать данные из официальной документации, опыт многих разработчиков из stackoverflow.com, а также свой опыт. Итак, как же победить этого «коварного врага» под названием «ACTION_BOOT_COMPLETED»?
Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments7

Ищите прикольный недорогой подарок мужчине на новый год 2016? Идеи подарков за 10-20$

Reading time3 min
Views36K
До нового года ещё больше месяца, но сани, как говорится, надо готовить летом, особенно, если хочется успеть дождаться посылок из Китая. Поэтому сегодня мы подготовили 10 интересных мелочей, которым будет рад почти любой гик. Впрочем, я судил по себе, так что это можно назвать моим личным Wish List (списком пожеланий). Если вам этот список близок, то рекомендую поделиться им в социальной сети и возможно на этот новый год вы получите подарки интереснее, чем новые чёрные носки.

Итак, поехали:
1. Умный браслет за умные деньги — Xiaomi Mi Band за 11.99$ (4151 человек лайкнули)

Читать дальше →
Total votes 22: ↑14 and ↓8+6
Comments30

Работа iOS App в фоновом режиме

Reading time4 min
Views45K
Стояла задача, чтобы программа отправляла через web socket текущие координаты по заданному пользователем интервалу. К тому же, программа должна работать в фоне и если пользователь или iOS по какой то причине её выгрузит из памяти, то желательно чтобы она перезапустилась и продолжила работу в фоне.
Поставленную задачу надо решить только средствами iOS без изменения серверной части (никаких Push Notifications).

Отправлять координаты по таймеру когда программа свернута в фон не составляет проблемы, для этого можно использовать background location mode для получения координат и long-running tasks для таймеров.

Но так как в iOS нет такой прелести как Android Background Services, то если вручную завершить программу, код перестает выполняться. Потому основная сложность заключается в том, как максимально быстро запустить программу в фоне, чтобы она продолжила выполнять свою задачу дальше, если её по каким то причинам выгрузила из памяти iOS, или если пользователь перезагрузил устройство, или если он вручную «убил» программу.

Теперь о том, что помогло решить данную задачу в приемлемом варианте:
Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments28

Подпольный рынок кардеров. Перевод книги «KingPIN». Глава 17. «Pizza and Plastic»

Reading time8 min
Views20K
Кевин Поулсен, редактор журнала WIRED, а в детстве blackhat хакер Dark Dante, написал книгу про «одного своего знакомого».

В книге показывается путь от подростка-гика (но при этом качка), до матерого киберпахана, а также некоторые методы работы спецслужб по поимке хакеров и кардеров.

Квест по переводу книги начался летом в ИТ-шном лагере для старшеклассников — «Шкворень: школьники переводят книгу про хакеров», затем к переводу подключились и Хабраюзеры, и даже немного редакция.

В предыдущей главе речь шла о том, как доверчевых кардеров раскрыли, используя контролируемую VPN, а разработчики Edison рассказали, что они создавали VPNку от анонимного заказчика. А буквально пару дней назад к ним обратился человек с Хабра с запросом помочь построить анонимный чат. Так что тема разработки в области анонимных VPN сервисов жива и актуальна.

Глава 17. «Пицца и Пластик»


(за перевод спасибо Ashot Ogoltsov)
На верхнем этаже небоскреба на Post Street, на полу из ламината, стоял компьютер Макса — тихий и холодный. Это была маленькая квартира, размером чуть больше тюремной камеры. Эту квартиру нашел ему Крис, и она соответствовала всем его запросам: маленькая площадь, огромное количество соседских Wi-fi сетей. Квартира была декорирована под светлое дерево, в ней стоял большой холодильник и была кровать-раскладушка, которая убиралась в стену.

Это была чистенькая квартирка площадью в 27 квадратных метров без каких-либо излишеств, где Макс скрывался после того как оставил свой пентхаус. Он получил неплохой навар с операции с Ситибанком и не занимался взломами уже несколько месяцев. Крису оставалось лишь приготовить поддельные документы для полугодовой аренды квартиры и заплатить депозит в размере 500$.
Total votes 21: ↑19 and ↓2+17
Comments0

Gradle: 5 полезностей для разработчика

Reading time6 min
Views44K
Привет, Хабр! Настало время, когда можно сказать, что «new build system» Gradle является стандартом отрасли Android-разработки. Инструмент сделан настолько просто и удобно, что большинство разработчиков не испытает трудностей, даже не зная, как он устроен, и какие дополнительные возможности в нём есть — возникающие проблемы легко решаются с помощью 5 минут на StackOverflow, путем копирования «магического кода» в конфигурационные файлы. Возможно, в том числе из-за этого не все разработчики изучают Gradle детально и не знают о многих его полезных возможностях, которые существенно облегчают жизнь.


Сегодня рассмотрим пять таких полезностей
Total votes 29: ↑29 and ↓0+29
Comments17

Книга «Изучаем C++ через программирование игр»

Reading time5 min
Views111K
image
Если вы хотите научиться программировать первоклассные игры, вам просто необходимо изучить язык С++. Эта книга поможет вам освоить разработку игр с самых азов, независимо от того, есть ли у вас опыт программирования. Гораздо интересней учиться, когда обучение превращается в игру. Каждая глава книги описывает самостоятельный игровой проект. В заключительной главе вам предстоит написать сложную игру, которая объединяет все приемы программирования, рас-смотренные в предыдущих главах. Книга идеально подойдет для начинающего программиста, планирующего не только как следует освоить непростой язык С++, но и поупражняться в программировании игр. Цель данной книги — познакомить вас с языком С++ в контексте программирования игр. Хотя невозможно представить себе такую книгу, которая сделала бы вас мастером в двух столь объемных темах, как программирование игр и язык C++, это издание пригодится вам в качестве вводного курса.
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments20

Android 6.0: Doze Mode, App Standby, Runtime Permissions. Всё, что необходимо знать каждому разработчику

Reading time5 min
Views65K

В этой статье мы рассмотрим три самых важных изменения в новом Android, которые не могут быть проигнорированы ни одним разработчиком, который поставил у себя в проекте targetSdk = 23 и выше.
Doze Mode — режим «отключки», в который переходят все устройства на Marshmallow после некоторого времени обездвижения без зарядки.

App Standby — автоматическое лишение приложений доступа к ресурсам устройства, всех которые давно не открывал пользователь.

Runtime Permissions — новая модель запроса разрешений. Теперь мы, как разработчики, каждый раз обращаясь, например, к микрофону устройства, должны проверять, есть ли у нашего приложения разрешение на доступ к нему.
Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments17

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

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

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

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

Android Notifications. Оповещения через Status Bar

Reading time8 min
Views76K
Добрый день, хабровчане. Давно занимаюсь разработкой под Android и хотелось бы рассказать сообществу о правильном подходе к созданию уведомлений.

image

На хабре уже есть статья по уведомлениям в статус баре для андроид . В ней рассматриваются основы отображения стандартного и конфигурируемого layout в статус баре.

Ниже, помимо описанного ранее, мы рассмотрим добавление прогрессбара, обработку события по нажатию на уведомлений, различные варианты состояний уведомлений. Рассмотрим добавленный на днях в Compatibility library Notification.Builder. А также поговорим о рекомендациям по UI (design guidlines), которые гугл рекомендует соблюдать при создании уведомлений.
Читать дальше →
Total votes 28: ↑25 and ↓3+22
Comments25

Анимация переходов между двумя фрагментами

Reading time4 min
Views27K
image Одним из краеугольных камней в Material design являются осмысленные движения между экранами. Lollipop предоставляет поддержку этих анимаций в форме фреймворка переходов между Activity и Fragment. Поскольку статей по данной теме не так много, я решил написать свою собственную!

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

Если вы желаете увидеть, что получилось — готовое приложение находится на GitHub.
Читать дальше →
Total votes 27: ↑23 and ↓4+19
Comments10

Установка неподписанных программ на устройства с iOS 9 без Jailbreak

Reading time3 min
Views118K
Дорого дня, уважаемые хабражители!

Сегодня я расскажу вам о том, как можно установить неподписанное (или плохо подписанное) приложение на устройство с iOS 9. Да, без Jailbreak. Да, бесплатно. Нужен лишь компьютер с OS X и Apple ID. Как такое возможно? Читаем под катом.



Осторожно! Много картинок!
Читать дальше →
Total votes 40: ↑33 and ↓7+26
Comments33

Information

Rating
Does not participate
Registered
Activity