#Kotlin #Google
Kotlin is now an official language for Android development inside Google
Теперь Kotlin официальный язык для Android разработки внутри Google (раньше была только официальная поддержка Kotlin как языка разработки под Android).
Kotlin is now an official language for Android development inside Google
Теперь Kotlin официальный язык для Android разработки внутри Google (раньше была только официальная поддержка Kotlin как языка разработки под Android).
#Coroutines #Kotlin
Coroutines for Android
Статья с основными советами как использовать корутины на Android. Гайд очень простой и покажет вам только основные моменты использования.
Также нашел там одну проблему - чтобы ваши корутины работали корректно, то вам надо в CoroutineScope.coroutineContext передавать SupervisorJob, а не Job
Coroutines for Android
Статья с основными советами как использовать корутины на Android. Гайд очень простой и покажет вам только основные моменты использования.
Также нашел там одну проблему - чтобы ваши корутины работали корректно, то вам надо в CoroutineScope.coroutineContext передавать SupervisorJob, а не Job
Medium
Coroutines for Android
Coroutines are a great way to handle asynchronous programming where it also offers an immense easy way to switch between context from…
#Kotlin #Coroutines
The reason to avoid GlobalScope
Structured concurrency - замечательная концепция, которая позволяет вам ограничивать время жизни запущенных корутин. В связи с этим практически любая корутина требует CoroutineScope. Неопытный разработчик может сделать `GlobalScope.launch` чтобы не морочиться. Проблем в том, что это в корне неправильно и нарушает принципы работы, которые вкладывалось авторами корутин 😞
Корутина наследует от CoroutineScope CoroutineDispatcher и прочие элементы из CoroutineContext, а GlobalScope ничего не содержит и ваша корутина будет выполняться, блокируя поток приложения.
Также плохо что ваша корутина не имеет какой либо привязки к объекту с ограниченным временем жизни.
Как это исправить? Ответ на этот вопрос вы найдете в статье от Романа Елизарова
The reason to avoid GlobalScope
Structured concurrency - замечательная концепция, которая позволяет вам ограничивать время жизни запущенных корутин. В связи с этим практически любая корутина требует CoroutineScope. Неопытный разработчик может сделать `GlobalScope.launch` чтобы не морочиться. Проблем в том, что это в корне неправильно и нарушает принципы работы, которые вкладывалось авторами корутин 😞
Корутина наследует от CoroutineScope CoroutineDispatcher и прочие элементы из CoroutineContext, а GlobalScope ничего не содержит и ваша корутина будет выполняться, блокируя поток приложения.
Также плохо что ваша корутина не имеет какой либо привязки к объекту с ограниченным временем жизни.
Как это исправить? Ответ на этот вопрос вы найдете в статье от Романа Елизарова
Medium
The reason to avoid GlobalScope
We do not recommend using GlobalScope with Kotlin Coroutines, but why? This story gives an explanation.
"Все эти люди отличаются низкой степенью вовлеченности, не уделяют внимания функциональности своих смартфонов и, как правило, игнорируют все доступные обновления." - я думаю что это и есть те партизаны, которые сидят на Android < 7 Nougat
Forwarded from AndroidInsider.ru #новости
Мнение: Откуда берется фрагментация Android и почему на самом деле ее нет https://androidinsider.ru/?p=184494
#TextWatcher
Using TextWatchers the right way, case study: Naira TextWatcher
Статья с разбором того что приходит в TextWatcher при изменение текста в EditText
Using TextWatchers the right way, case study: Naira TextWatcher
Статья с разбором того что приходит в TextWatcher при изменение текста в EditText
Medium
Using TextWatchers the right way, case study: Naira TextWatcher
I have seen lots of android apps with not-so-good user experience when it comes to editing entered amounts and to be honest, I have…
#Kotlin #Conference
Conference for Kotliners
Этим летом 7 июня в Будапеште пройдет конференция для всех Kotliner-ов
Conference for Kotliners
Этим летом 7 июня в Будапеште пройдет конференция для всех Kotliner-ов
#Kotlin #SchoolKt
School.kt объявляет первый набор обучению Kotlin
Kotlin - это один из самых хайповых языков современности, а в Android он смог перезагрузить разработку и повысить ее эффективность. Kotlin уже стал стандартом для новых Android приложений, язык является официально поддерживаемым для Android разработке, а также совсем недавно он стал язык разработки для приложение внутри Google.
Чтобы оставаться востребованным разработчиком вам стоит начать изучать язык еще вчера!
В этом вам поможет School.kt - проект от сообщества BKUG. В рамках курса (который стартует 20 февраля) вы сможете изучить Kotlin, систематизировать свои знания и узнать как писать на каноничном Kotlin. Лекции будут вести разработчики из BKUG и Juno, которые имеют за плечами уже 3+ года опыта Kotlin, и начинали разработку на нем еще до первой версии языка.
Если же вы уже имеете большой опыт за плечами и готовы поделиться знаниями с другими - мы всегда рады менторам!
Партнеры проекта: JetBrains, Juno и SPACE!
School.kt объявляет первый набор обучению Kotlin
Kotlin - это один из самых хайповых языков современности, а в Android он смог перезагрузить разработку и повысить ее эффективность. Kotlin уже стал стандартом для новых Android приложений, язык является официально поддерживаемым для Android разработке, а также совсем недавно он стал язык разработки для приложение внутри Google.
Чтобы оставаться востребованным разработчиком вам стоит начать изучать язык еще вчера!
В этом вам поможет School.kt - проект от сообщества BKUG. В рамках курса (который стартует 20 февраля) вы сможете изучить Kotlin, систематизировать свои знания и узнать как писать на каноничном Kotlin. Лекции будут вести разработчики из BKUG и Juno, которые имеют за плечами уже 3+ года опыта Kotlin, и начинали разработку на нем еще до первой версии языка.
Если же вы уже имеете большой опыт за плечами и готовы поделиться знаниями с другими - мы всегда рады менторам!
Партнеры проекта: JetBrains, Juno и SPACE!
Forwarded from Flutter Dev Podcast — анонсы выпусков
🔥Открываем Flutter-подкаст, знакомимся и обсуждаем возможности и перспективы фреймворка.
https://soundcloud.com/flutterdevpodcast/0-pilotnyy-vypusk
Станет ли Flutter спасением для мелкого аутсорса и стартапов, какой помощи ждать от Google тем, кто всё-таки решился переехать на Flutter, какими внутренними Flutter-приложениями уже пользуются сами гуглеры, "что там по Фуксии" и перестало ли слово "кроссплатформа" быть ругательным - всё это и многое другое мы обсудим в пилотном выпуске!
У микрофона: Евгений Сатуров, Артем Зайцев, Звиад Кардава.
Спонсор выпуска - студия разработки Surf (Mobile + AI) https://surfstudio.ru/
Родмэп-2019: github.com/flutter/flutter/wiki/Roadmap
Баг-трекер: github.com/flutter/flutter/issues
Майлстоуны: github.com/flutter/flutter/milestones
Коллекция библиотек: pub.dartlang.org/flutter/packages
Подборка готовых приложений: itsallwidgets.com
Нашумевшая статья от Хакер о Фуксии(платно): xakep.ru/2019/01/09/
Официальный чат подкаста: https://news.1rj.ru/str/flutterdevpodcast
https://soundcloud.com/flutterdevpodcast/0-pilotnyy-vypusk
Станет ли Flutter спасением для мелкого аутсорса и стартапов, какой помощи ждать от Google тем, кто всё-таки решился переехать на Flutter, какими внутренними Flutter-приложениями уже пользуются сами гуглеры, "что там по Фуксии" и перестало ли слово "кроссплатформа" быть ругательным - всё это и многое другое мы обсудим в пилотном выпуске!
У микрофона: Евгений Сатуров, Артем Зайцев, Звиад Кардава.
Спонсор выпуска - студия разработки Surf (Mobile + AI) https://surfstudio.ru/
Родмэп-2019: github.com/flutter/flutter/wiki/Roadmap
Баг-трекер: github.com/flutter/flutter/issues
Майлстоуны: github.com/flutter/flutter/milestones
Коллекция библиотек: pub.dartlang.org/flutter/packages
Подборка готовых приложений: itsallwidgets.com
Нашумевшая статья от Хакер о Фуксии(платно): xakep.ru/2019/01/09/
Официальный чат подкаста: https://news.1rj.ru/str/flutterdevpodcast
#AppBundle #Optimizations
Google Santa Tracker — Moving to an Android App Bundle
Кто слышал о приложение Google Santa Tracker? Это приложение, который каждый год позволяет миллионам пользователям следить за передвижением Санты, и чтобы сделать его лучше "Корпорация Добра" обновляет его, уже в 2017 году приложение весело 60 Мб 😢 (универсальное APK), что довольно много и является проблемой чтобы быстро насладиться главным функционалом приложения - трекером.
Чтобы решить эту проблем разработчики решили воспользоваться Android App Bundle (AAB). С помощью этого формата поставки приложения можно организовать динамическую загрузку функционала, который пользователь использует редко или вовсе не используется и не загружать ресурсы графики, строки и нативные библиотеки, которые не нужны на устройстве.
В результате проведенных оптимизаций с помощью AAB удалось сократить размер загружаемого APK при начальной установки до 9.21 MB (85% сокращение).
В статье описывается:
👉 Первые шаги с AAB
👉 Dynamic Delivery
👉 Реализация Feature модулей и как это изменило UI/UX
👉 Результаты оптимизации
Google Santa Tracker — Moving to an Android App Bundle
Кто слышал о приложение Google Santa Tracker? Это приложение, который каждый год позволяет миллионам пользователям следить за передвижением Санты, и чтобы сделать его лучше "Корпорация Добра" обновляет его, уже в 2017 году приложение весело 60 Мб 😢 (универсальное APK), что довольно много и является проблемой чтобы быстро насладиться главным функционалом приложения - трекером.
Чтобы решить эту проблем разработчики решили воспользоваться Android App Bundle (AAB). С помощью этого формата поставки приложения можно организовать динамическую загрузку функционала, который пользователь использует редко или вовсе не используется и не загружать ресурсы графики, строки и нативные библиотеки, которые не нужны на устройстве.
В результате проведенных оптимизаций с помощью AAB удалось сократить размер загружаемого APK при начальной установки до 9.21 MB (85% сокращение).
В статье описывается:
👉 Первые шаги с AAB
👉 Dynamic Delivery
👉 Реализация Feature модулей и как это изменило UI/UX
👉 Результаты оптимизации
Medium
Google Santa Tracker — Moving to an Android App Bundle
This post is the first in the series which explores the improvements made to the Google Santa Tracker Android app for 2018.
#Kotlin #Extensions
KdroidExt - Use the power of Kotlin to make your code smaller and beautiful
С момент официальной поддержки Kotlin в Android появилась специальная библиотека Android KTX, которое включает в себя различные Kotlin функции, которые упрощают взаимодействие с Android SDK из Kotlin.
Добавление нового API там довольно консервативно и порой хочется добавить что-то более простое, но не вписывающееся в видение авторов библиотеки 😞
Но можно же просто решить такую проблема - запилить свою библиотеку (у меня в проекте есть 😀), но тут снова печаль - нет никакой стандартизации. KdroidExt - имеет множество расширений, позволяющих упростить работу и может стать стандартом, если мы начнем ее активнее использовать:
👉 Работу с различными *View
👉 Доступ к системным сервисам
👉 Показ toast (их кстати выпили из Android KTX к релизу 1.0)
👉 Создание Intent и запуск Activity/Service
👉 Логирование
👉 Работа с потоками/AsyncTask
👉 Изящно избавиться от
👉 Работа с ресурсами
👉 Расширения для Activity/Fragment
👉 очень много всего еще
KdroidExt - Use the power of Kotlin to make your code smaller and beautiful
С момент официальной поддержки Kotlin в Android появилась специальная библиотека Android KTX, которое включает в себя различные Kotlin функции, которые упрощают взаимодействие с Android SDK из Kotlin.
Добавление нового API там довольно консервативно и порой хочется добавить что-то более простое, но не вписывающееся в видение авторов библиотеки 😞
Но можно же просто решить такую проблема - запилить свою библиотеку (у меня в проекте есть 😀), но тут снова печаль - нет никакой стандартизации. KdroidExt - имеет множество расширений, позволяющих упростить работу и может стать стандартом, если мы начнем ее активнее использовать:
👉 Работу с различными *View
👉 Доступ к системным сервисам
👉 Показ toast (их кстати выпили из Android KTX к релизу 1.0)
👉 Создание Intent и запуск Activity/Service
👉 Логирование
👉 Работа с потоками/AsyncTask
👉 Изящно избавиться от
if(Build.Version.SDK_INT > 21)👉 Работа с ресурсами
👉 Расширения для Activity/Fragment
👉 очень много всего еще
GitHub
GitHub - nowfalsalahudeen/KdroidExt: Extensions for Kotlin Android. Use the power of Kotlin to make your code smaller and beautiful.
Extensions for Kotlin Android. Use the power of Kotlin to make your code smaller and beautiful. - GitHub - nowfalsalahudeen/KdroidExt: Extensions for Kotlin Android. Use the power of Kotlin to make...
#Google #OpenSource
Google открыла исходный код приложения Google Santa Tracker
Вчера я писал (ссылочка на пост) о оптимизации размера приложения Google Santa Tracker, теперь же вы можете сами изучить исходный код и увидеть все сами.
Google открыла исходный код приложения Google Santa Tracker
Вчера я писал (ссылочка на пост) о оптимизации размера приложения Google Santa Tracker, теперь же вы можете сами изучить исходный код и увидеть все сами.
GitHub
GitHub - google/santa-tracker-android: Ho Ho Ho
Ho Ho Ho. Contribute to google/santa-tracker-android development by creating an account on GitHub.
#GoogleIO
Google I/O 2019 пройдет 7-9 мая
Билеты будут продаваться 21-27 февраля, а потом состоится традиционная лотерея!
Чего ждете от конференции вы?
Google I/O 2019 пройдет 7-9 мая
Билеты будут продаваться 21-27 февраля, а потом состоится традиционная лотерея!
Чего ждете от конференции вы?
io.google
Google I/O 2025
Don't miss Google I/O, featuring product launches, innovations, and insights. Tune in for the live keynotes and sessions.
Forwarded from ❗️NEWS Android Dev Подкаст (Denis Nek)
https://androiddev.apptractor.ru/android-dev-podkast-85/
Подкаст #85. ML в Android
Machine Learning, а вернее запуск моделей на мобильных устройствах, тема не столько популярная, как выбор архитектуры мобильного приложения, но в ней таится очень много интересного. Интервью со Славой, бывшим разработчиком Prisma, о всех его приключениях в мобильном ML мире. В выпуске вы узнаете сколько тензоров нужно, чтобы сжечь Xiaomi и как не уйти в запой, когда инференс на одном устройстве занимает 3 секунды, а на другом с той же моделью 5 минут.
https://github.com/XiaoMi/mace - Xiaomi MACE
https://firebase.google.com/docs/ml-kit/ - Firebase ML Kit (beta)
https://tensorflow.org/lite/ - TensorFlow Lite
https://research.fb.com/downloads/caffe2/ - Caffe2 by Facebook
https://pytorch.org/ - PyTorch
https://code.fb.com/ml-applications/qnnpack/ - Optimized Mobile Deep Learning by Facebook
https://developer.qualcomm.com/software/qualcomm-neural-processing-sdk - Qualcomm Neural Processing SDK for AI (SNPE)
https://developer.huawei.com/consumer/en/devservice/doc/2020315 - HUAWEI HiAI
https://developer.android.com/ndk/guides/neuralnetworks/ - Neural Networks API by Google
http://ai-benchmark.com/ - AI benchmarks
https://blog.prismalabs.ai/real-time-portrait-segmentation-on-smartphones-39c84f1b9e66 - Prisma about portrait segmentation
https://www.androidauthority.com/kirin-970-vs-snapdragon-845-859742/ - NPU vs DSP
А еще не забудьте послушать пилотный выпуск подкаста про Flutter https://soundcloud.com/flutterdevpodcast/0-pilotnyy-vypusk
Подкаст #85. ML в Android
Machine Learning, а вернее запуск моделей на мобильных устройствах, тема не столько популярная, как выбор архитектуры мобильного приложения, но в ней таится очень много интересного. Интервью со Славой, бывшим разработчиком Prisma, о всех его приключениях в мобильном ML мире. В выпуске вы узнаете сколько тензоров нужно, чтобы сжечь Xiaomi и как не уйти в запой, когда инференс на одном устройстве занимает 3 секунды, а на другом с той же моделью 5 минут.
https://github.com/XiaoMi/mace - Xiaomi MACE
https://firebase.google.com/docs/ml-kit/ - Firebase ML Kit (beta)
https://tensorflow.org/lite/ - TensorFlow Lite
https://research.fb.com/downloads/caffe2/ - Caffe2 by Facebook
https://pytorch.org/ - PyTorch
https://code.fb.com/ml-applications/qnnpack/ - Optimized Mobile Deep Learning by Facebook
https://developer.qualcomm.com/software/qualcomm-neural-processing-sdk - Qualcomm Neural Processing SDK for AI (SNPE)
https://developer.huawei.com/consumer/en/devservice/doc/2020315 - HUAWEI HiAI
https://developer.android.com/ndk/guides/neuralnetworks/ - Neural Networks API by Google
http://ai-benchmark.com/ - AI benchmarks
https://blog.prismalabs.ai/real-time-portrait-segmentation-on-smartphones-39c84f1b9e66 - Prisma about portrait segmentation
https://www.androidauthority.com/kirin-970-vs-snapdragon-845-859742/ - NPU vs DSP
А еще не забудьте послушать пилотный выпуск подкаста про Flutter https://soundcloud.com/flutterdevpodcast/0-pilotnyy-vypusk
#UI #Material
Setting up a Material Components theme for Android
На Google I/O 2018 было представлено значительное обновление системы дизайна Google - Material Design 2.0. Новая библиотека
В статье подробно рассматриваются аспекты реализации нового дизайна в ваших приложениях на Android
Material Design Components Playground
Репозиторий Material Components for Android
Setting up a Material Components theme for Android
На Google I/O 2018 было представлено значительное обновление системы дизайна Google - Material Design 2.0. Новая библиотека
com.google.android.material содержит множество изменений: новые темы, виджеты, стиль и атрибуты, на основе которы происходит кастомизация.В статье подробно рассматриваются аспекты реализации нового дизайна в ваших приложениях на Android
Material Design Components Playground
Репозиторий Material Components for Android
GitHub
GitHub - material-components/material-components-android: Modular and customizable Material Design UI components for Android
Modular and customizable Material Design UI components for Android - material-components/material-components-android
#Kotlin #VarArg
Kotlin’s vararg and spread operator
Kotlin поддерживает переменное число аргументов (vararg) у функций, но в отличие от Java у него нет ограничения что vararg параметр может быть только один и должен быть расположен последним. В Kotlin у вас вполне будет валидна функция
fun sample(text:String, vararg list1: String, count: Int)
Как такое может компилироваться в валидный байт код? Какова цена разворачивания массива в vararg с помощью spread оператора (*) ? Все это вы можете узнать из статьи.
Kotlin’s vararg and spread operator
Kotlin поддерживает переменное число аргументов (vararg) у функций, но в отличие от Java у него нет ограничения что vararg параметр может быть только один и должен быть расположен последним. В Kotlin у вас вполне будет валидна функция
fun sample(text:String, vararg list1: String, count: Int)
Как такое может компилироваться в валидный байт код? Какова цена разворачивания массива в vararg с помощью spread оператора (*) ? Все это вы можете узнать из статьи.
#AndroidX #RecyclerView #Selection
A guide to recyclerview-selection
Google делает много полезных библиотек в рамках AndroidX, но не всегда они славятся простой той и гибкостью 😞. Яркий пример - RecyclerView Selection. В статье вы найдете руководство о том, как настроить выбор в RecyclerView, а самое главное - череду проблем и как их пришлось решать окольными путями (. Например, не сохраняется состояние после поворота и происходит креш 🤬
A guide to recyclerview-selection
Google делает много полезных библиотек в рамках AndroidX, но не всегда они славятся простой той и гибкостью 😞. Яркий пример - RecyclerView Selection. В статье вы найдете руководство о том, как настроить выбор в RecyclerView, а самое главное - череду проблем и как их пришлось решать окольными путями (. Например, не сохраняется состояние после поворота и происходит креш 🤬
Medium
A guide to recyclerview-selection
I tried the recyclerview-selection on a new project. This article should help if you are planning to integrate the library on your project.
👍1
Android Broadcast
#Kotlin #VarArg Kotlin’s vararg and spread operator Kotlin поддерживает переменное число аргументов (vararg) у функций, но в отличие от Java у него нет ограничения что vararg параметр может быть только один и должен быть расположен последним. В Kotlin у…
Я сделал ошибку о том что сигнатура функции
валидна в Kotlin. Нельзя использовать несколько vararg. Приношу свои извинения.
fun sample(text:String, vararg list1: String, vararg list2: Int)
валидна в Kotlin. Нельзя использовать несколько vararg. Приношу свои извинения.
#RecyclerView
Update recycler view content without refreshing the data
Знали ли вы о роли payload в
???
С помощью этих данных можно обновить элементы вашего списка без необходимости полной перерисовки. Это будет полезно когда вам надо выделить текст на элементе списка, либо свернуть/развернуть его. Как это можно реализовать найдете в статье.
Update recycler view content without refreshing the data
Знали ли вы о роли payload в
RecyclerView.Adapter.notifyItemChanged(int position, Object payload)RecyclerView.Adapter.notifyItemRangeChanged(int positionStart, int itemCount, Object payload)???
С помощью этих данных можно обновить элементы вашего списка без необходимости полной перерисовки. Это будет полезно когда вам надо выделить текст на элементе списка, либо свернуть/развернуть его. Как это можно реализовать найдете в статье.
Medium
Update recycler view content without refreshing the data.
Avoid graphic glitches modifying specific ViewHolder items without redrawing them.
#Firebase #Firestore
Cloud Firestore has Gone GA, Lower Pricing Tiers, New Locations, and more!
Обновления от команды Firebase:
🎉 Firestore вышел из Beta
💲 Новая ценовая политика... скоро. Скидки до 50% при использование серверов в отлдельных регионах
📍 Новые локации с серверами
👉 Возможность просматривать статистику использования Firestore: чтения, запись и удаление. Это поможет в оценке расходов. Работает на основе Stackdriver, благодаря чему позволяет задавать уведомления о достижении лимитов.
Cloud Firestore has Gone GA, Lower Pricing Tiers, New Locations, and more!
Обновления от команды Firebase:
🎉 Firestore вышел из Beta
💲 Новая ценовая политика... скоро. Скидки до 50% при использование серверов в отлдельных регионах
📍 Новые локации с серверами
👉 Возможность просматривать статистику использования Firestore: чтения, запись и удаление. Это поможет в оценке расходов. Работает на основе Stackdriver, благодаря чему позволяет задавать уведомления о достижении лимитов.
The Firebase Blog
Cloud Firestore has Gone GA, Lower Pricing Tiers, New Locations, and more!
Hey there, Firebase developers! Did you hear the news? Cloud Firestore — our NoSQL database in the cloud for mobile and web apps — is officially out of beta and in General Availability!