Android Broadcast
14.4K subscribers
3.68K photos
367 videos
11 files
6.1K links
Подборка новостей и статей для Android разработчиков.

Реклама и связь с автором @ab_manager

РКН https://abdev.by/rkn_tg_ab #MQRZR
Download Telegram
#Kotlin #MemoryLeak

How Kotlin helps you avoid memory leaks

Kotlin ввел множество новых механизмов, которые упрощают написание кода в Android:
👉 null safety
👉 type inference
👉 закрытые от наследования классы по умолчанию
👉 все вложенные классы по умолчанию статические

Но в дополнение ко всем ещё Kotlin может помогать вам избегать утечек памяти.

class SampleActivity : Activity() {

override fun onCreate(savedState: Bundle?) {
super.onCreate(savedState)
setContentView(R.layout.activity_leak)
button.setOnClickListener {
startAsyncWork()
}
}

private fun startAsyncWork() {
val work = Runnable {
SystemClock.sleep(20000)
}
Thread(work).start()
}
}

Такой код не вызовет утечки в Android, хотя его аналог в Java бы вызывал.

Разница заключается в том, что лямбда в Kotlin интерпретируется как статический вложенный класс, и не хранит ссылку на внешний класс, если код внутри не обращается к внешним нестатическим элементам. В Java независимо от каких-либо условий всегда будет создаваться обычный класс.

Замечание: вышеприведенное рассматривается для Java 7, так как Android разработка сейчас использует эту версию в байт коде. Для Java 8 лямбды исполняются с помощью invokedynamic, что оптимизирует их выполнение.
#GarbageCollector #MemoryLeak

Everything you need to know about Memory Leaks in Android

Android имеет хорошую систему очистку памяти, которая улучшается с выходом каждой новой версией ОС. Но допустить утечку памяти все также остается возможным. В статье довольно простым языком и наглядными иллюстрациями показывается:
👉 Что такое Stack и Heap
👉 Как очищается память Garbage Collector-ом
👉 Как возникают утечки памяти и как не допускать их
👉 Последствия утечек памяти
👉 Поиск утечек памяти
#MemoryLeak

Вышел Leak Canary 2.0

Вышла новая мажорная версия популярного инструмента для отслеживания утечек памяти во время работы приложения. В новой версии произошла уйма изменений:
👉 Библиотека полностью переписана на Kotlin
👉 Улучшен механизм сборки дампов памяти, что будет меньше блокировать работу с приложением
👉 Новый UI для просмотра информации о утечках памяти
👉 Новая библиотека LeakSentry, которая позволяет определить когда происходит утечка и вызывает LeakCanary для сбора информации. Это поможет понять какие объекты приводят к OutOfMemoryError
👉 Новый парсер heap, который работает эффективнее и быстрее
👉 Упрощена настройка библиотеки - 0 строк кода для включения, только добавление зависимости
👉 Новая утилита Heap Explorer, которая позволяет делать анализ heap в LeakCanary прямо на устройства
👉 Из коробки поддерживает отслеживание за утечками Fragment
👉 Новая библиотека Shark, которая используется LeakCanary для анализа и может запускать в любой Java VM. Также доступен CLI, который вы можете использовать с компьютера для сбора информации о расходе памяти с устройства


В обновление произошли значительные изменения API, поэтому если вы активно его использовали (а не просто подключали библиотеку), то вам надо будет выполнить миграцию. Больше информации на официальном сайте.
#MemoryLeak #LeakCanary

Вышел LeakCanary 2.1.0

Популярная утилита для поиска утечек памяти развивается дальше. После недавне представленной версии 2.0 уже выходит следующее минорное обновление, в которое попали новые функции:
👉 Gradle плагин для обфусцированных приложений. Раньше была проблема, что при тестировании обфусцированной сборки приложения (с R8 или ProGuard) все стектрейсы было бесполезно смотреть с устройства так, как все названия классов/методов были изменены. Встречайте LeakCanary gradle плагин для обфусцированных приложений, которые решает это
👉 Множество улучшений в UI приложения для просмотра утечек памяти на устройства
👉 Улучшение документации
👉 Улучшение в API Leak и LeakTrace
👉 Автоматическое отключение LeakCanary, если в classpath найден заданный класс. По умолчанию этим классом является org.junit.Test
👉 Возможность изменения способа с помощью которого LeakCanary ищет утечки памяти в heap dump
👉 Интерактивный режим работы CLI
#MemoryLeak #LeakCanary

Вышел LeakCanary 2.2

В новой версии нас ждут новые плюшки:
👉 Отслеживание утечек ViewModel из Arch Components
👉 Поддержка Android TV
👉 Java-friendly Config builders
#MemoryLeak #LeakCanary

Вышел LeakCanary 2.3

Вышла новая версия решения для обслуживания утечек памяти в Android приложениях. Изменений мало в основном багфикс, но и для всех забывчивых, кто забывает убрать LeakCanary из релизных сборок будет происходить креш.
#MemoryLeak

Practical Guide To Solve OutOfMemoryError in Android Application

Утечки памяти и, как следствие, OutOfMemoryError - больное место как для начинающего, так и для опытного Android разработчика. Основная проблема состоит в том что подобного рода ошибки не так очевидны и их сложно сразу отследить. Наиболее частые причины возникновения:
👉 Использование static Context, View или Activity
👉 Зарегистрированные, но не актуальные Listener'ы
👉 Использование getContext() вместо getApplicationContext() там где это необходимо
👉 Не статичные вложенные классы

В статье подробно рассказывается обо всех этих причинах, приводятся примеры подобных утечек и рассказывается как их избегать.
#MemoryLeak #ViewBinding

Avoiding memory leaks when using Data Binding and View Binding

При использовании View Binding легко попасть в ситуацию, когда у вас в Fragment начнет утекать память. Связано это с тем, что ViewBinding хранит ссылки на View, которые уничтожаются в onDestroyView() и создаются в onCreateView().

Самое интересное, что автор предложил решением мою библиотеку ViewBindingPropertyDelegate, которая изящно решает работу с ViewBinding и DataBinding.
#MemoryLeak #Tooling

Вышел LeakCanary 2.5

Что нового:
🚀 Ускорен анализ heap
👉 LeakCanary улучшил расчет размера для всех объектов
👉 Возможность отключения дампа heap через ui
👉 Возможность деобфускации дампа heap из командной строки с помощью Shark CLI