Сегодня обжёгся о нюансы работы
и
. Это было очень глупо и стыдно, но наверняка я не один такой. Поэтому держи небольшую статью, в которой кейс разобран.
#view #lifecycle #window
https://medium.com/square-corner-blog/android-leak-pattern-subscriptions-in-views-18f0860aa74c
View.onAttachedToWindow()
и
View.onDetachedFromWindow()
. Это было очень глупо и стыдно, но наверняка я не один такой. Поэтому держи небольшую статью, в которой кейс разобран.
#view #lifecycle #window
https://medium.com/square-corner-blog/android-leak-pattern-subscriptions-in-views-18f0860aa74c
Medium
Android leak pattern: subscriptions in views
In Square Register Android, we rely on custom views to structure our app. Sometimes a view listens to changes from an object that lives…
Выступление Chet Haase и Romain Guy. Тут ты должен был стать заинтригован.
В докладе описывается весь Android Rendering Pipeline, но поскольку вместить это в 40 минут не получится, доклад выглядит как быстрое набрасывание названий разных классов и модулей. Тем не менее, вдумчиво его посмотреть я бы скорее советовал.
Наброшу несколько названий из доклада, чтобы ты понимал, о чём речь: Choreographer, VSync, UI Thread, RenderThread, SurfaceFlinger, BufferQueue, Hardware Composer (HWC).
Теперь несколько интересных фактов из сессии:
1. Начиная с Android Oreo можно использовать
2. Кусочек хинта (почему так - см. видео) - чем меньше
3. Метод
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.
Подробности обо всём этом найдёшь по ссылке.
#rendering #window #surface #gpu
https://youtu.be/zdQRIYOST64
В докладе описывается весь 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
YouTube
Drawn out: How Android renders (Google I/O '18)
Come learn how Android turns your app's UI into pixels on the screen. Understanding how things work under the hood can help you figure out how to get the best performance for your applications.
Rate this session by signing-in on the I/O website here → h…
Rate this session by signing-in on the I/O website here → h…
Пока Jetpack WindowManager пыхтит и краснеет, чтобы отдать нам состояние foldable устройств (название WindowManager у меня в этом контексте до сих пор вызывает замешательство), ребята из Square выпустили Curtains - набор инструментов для работы с настоящими
Если где-то возникает потребность понимать, что за
#library #window
Window. Если где-то возникает потребность понимать, что за
Window у нас на руках, ловить Touch ивенты на всём окне целиком или заниматься другими непотребствами того же порядка, то сюда определённо стоит посмотреть.#library #window
GitHub
GitHub - square/curtains: Lift the curtain on Android Windows!
Lift the curtain on Android Windows! Contribute to square/curtains development by creating an account on GitHub.