Разработка ждёт балета
1.65K subscribers
510 photos
4 videos
15 files
1.55K links
What I cannot create, I do not understand.

DM: @alexey_mileev
PeerLab: https://xn--r1a.website/+e2ND1tAa0lU2ZTli
Download Telegram
Сегодня обжёгся о нюансы работы
View.onAttachedToWindow()

и
View.onDetachedFromWindow()

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

#view #lifecycle #window
https://medium.com/square-corner-blog/android-leak-pattern-subscriptions-in-views-18f0860aa74c
Выступление Chet Haase и Romain Guy. Тут ты должен был стать заинтригован.
В докладе описывается весь Android Rendering Pipeline, но поскольку вместить это в 40 минут не получится, доклад выглядит как быстрое набрасывание названий разных классов и модулей. Тем не менее, вдумчиво его посмотреть я бы скорее советовал.
Наброшу несколько названий из доклада, чтобы ты понимал, о чём речь: Choreographer, VSync, UI Thread, RenderThread, SurfaceFlinger, BufferQueue, Hardware Composer (HWC).
Теперь несколько интересных фактов из сессии:
1. Начиная с Android Oreo можно использовать Bitmap.Config.HARDWARE, чтобы аллоцировать Bitmap напрямую на GPU и не тратить время на копирование. Недостаток: если серьёзно разойтись, можно получить пачку совершенно невнятных крашей из глубин фреймворка
2. Кусочек хинта (почему так - см. видео) - чем меньше Window объектов на экране, тем лучше
3. Метод invalidate(left, top, right, bottom) можно больше не дрочить - система уже умеет неплохо оптимизировать этот момент, а багов от его использования уйма
4. “RecyclerView is now able to do prefetching of items ahead of time”
5. Graphika app on Github - пачка примеров с использованием SurfaceFlinger, Surface, SurfaceView, media encoder, virtual displays.
6. adb shell dumpsys SurfaceFlinger лучше выполнять, когда что-то анимируется/меняется на экране, иначе можно получить не совсем точные данные из-за дополнительных оптимизаций
Подробности обо всём этом найдёшь по ссылке.

#rendering #window #surface #gpu
https://youtu.be/zdQRIYOST64
Пока Jetpack WindowManager пыхтит и краснеет, чтобы отдать нам состояние foldable устройств (название WindowManager у меня в этом контексте до сих пор вызывает замешательство), ребята из Square выпустили Curtains - набор инструментов для работы с настоящими Window.
Если где-то возникает потребность понимать, что за Window у нас на руках, ловить Touch ивенты на всём окне целиком или заниматься другими непотребствами того же порядка, то сюда определённо стоит посмотреть.

#library #window