Я нашел совет о том, что вызов Activity.reportFullyDrawn может помочь сократить время запуска приложений, и это упоминается в некоторых местах:
- https://new.reddit.com/r/androiddev/com ... _this_one/
- https://android-developers.googleblog.c ... k-app.html
- https://developer.android.com/reference ... llyDrawn()
- https://medium.com/androiddevelopers/im ... fbdb9c9020
Вызовите reportFullyDrawn(), чтобы сообщить о TTFD и сообщить системе, что ваша деятельность завершила рендеринг . Чтобы улучшить запуск приложения, система Android настраивает оптимизацию, расставляя приоритеты работы, выполняемой до вызова reportFullyDrawn(). Вызов этого метода, когда ваше приложение находится в полностью пригодном к использованию состоянии, улучшит время запуска вашего приложения. Каждое приложение должно использовать этот API! И не забудьте измерить его.
Сообщите системе, что ваше приложение теперь полностью прорисовано, для диагностики и целях оптимизации. Система может корректировать оптимизацию, чтобы расставить приоритеты в работе, выполняемой до вызова reportFullyDrawn, чтобы улучшить запуск приложения. Искажение окна запуска путем слишком позднего или слишком раннего вызова reportFullyDrawn может снизить производительность приложения и запуска.
Это также используется для определения времени запуска приложения, чтобы приложение могло сообщить, когда оно будет запущено. полностью в рабочем состоянии; без этого единственное, что может определить сама система, — это точка, в которой окно активности впервые отрисовывается и отображается. Чтобы участвовать в измерении времени запуска приложения, вам всегда следует вызывать этот метод после первого запуска (когда вызывается onCreate(android.os.Bundle)), в тот момент, когда вы полностью отрисовали свой пользовательский интерфейс и заполнили его всеми важными данными. Вы также можете безопасно вызвать этот метод в любое время после первого запуска, и в этом случае он будет просто проигнорирован.
Если этот метод вызывается до того, как окно активности впервые отрисовывается и отображается как измеренное системой время, указанное здесь, будет сдвинуто к измеренному системой времени.
Проблема
Я ни в одном из них не могу найти, в какое время лучше всего вызывать эту функцию.
Что я пробовал
Я пытался поискать код других приложений, чтобы проверить здесь, на StackOverflow, и спросить на Reddit. В документации я вижу только то, что вам следует всегда вызывать этот метод после первого запуска (когда вызывается onCreate(android.os.Bundle)) .
Но при какой там момент...
Я не смог найти ни одного примера кода, который бы ее использовал, и здесь, на StackOverflow, эта функция почти не упоминается. Кажется, это небольшой совет, как улучшить то, о чем люди обычно не беспокоятся...
Вопросы
1.Когда мне следует вызвать reportFullyDrawn?
В конце каждого onCreate действия? Или в каком-нибудь обратном вызове, например в onPreDraw этого:
Код: Выделить всё
val contentView = findViewById(android.R.id.content)
contentView.viewTreeObserver.addOnPreDrawListener(object : ViewTreeObserver.OnPreDrawListener {
override fun onPreDraw(): Boolean {
...
Или, может быть, после setContentView или внутри него?
Или что-то еще, например, после завершения работы заставки?
2. Действительно ли это улучшает что-либо в работе приложения? Или просто для статистики, которая появляется на различных веб-сайтах, таких как Play Console и Firebase Analytics? Вы тоже его использовали? Заметили разницу?
- И только это здесь помогает? Больше ничего не нужно? Если да, то почему Android не делает этого автоматически, если это так приятно и легко добавить?
Подробнее здесь: https://stackoverflow.com/questions/786 ... fullydrawn
Мобильная версия