Как аннотированные методы @OnLifecycleEvent из компонентов архитектуры подключаются к LifecycleOwner? - PullRequest
0 голосов
/ 24 сентября 2018

Похоже, нам не нужно использовать kapt для @OnLifecycleEvent аннотаций для работы.Итак, как они подключаются?Это какая-то обработка аннотаций во время выполнения?

Я спрашиваю, потому что мне любопытно, какова стоимость использования этих аннотаций.Влияет ли их использование на время запуска приложения?Или время компиляции проекта?

1 Ответ

0 голосов
/ 03 июня 2019

Они используют отражение, чтобы найти аннотированные функции с @OnLifecycleEvent.Это реальная необходимость, почему классы должны реализовывать LifecycleObserver.Если нужно было сделать kapt, то, вероятно, не должно было быть никакого интерфейса для реализации.

Разрешение выполняется во время выполнения, поскольку время хранения установлено на RetentionPolicy.RUNTIME.

Отражение стоит дорого, и поэтому они создают static кэш каждого метода и используют ссылку на метод, да еще и отражение, для вызова каждого из них.У меня нет цифр, чтобы указать, как это напрямую влияет на время запуска.

...