Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Метрики
Отслеживайте и сообщайте о различных показателях времени выполнения вашего приложения.
Последнее обновление | Стабильный выпуск | Кандидат на выпуск | Бета-версия | Альфа-релиз |
---|
12 марта 2025 г. | - | - | 1.0.0-бета02 | - |
Объявление зависимостей
Чтобы добавить зависимость от Metrics, необходимо добавить в свой проект репозиторий Google Maven. Для получения дополнительной информации прочтите репозиторий Google Maven .
Добавьте зависимости для нужных вам артефактов в файл build.gradle
для вашего приложения или модуля:
классный
dependencies {
implementation "androidx.metrics:metrics-performance:1.0.0-beta02"
}
Котлин
dependencies {
implementation("androidx.metrics:metrics-performance:1.0.0-beta02")
}
Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .
Обратная связь
Ваши отзывы помогают сделать Jetpack лучше. Дайте нам знать, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.
Создать новую задачу
Дополнительную информацию см. в документации по системе отслеживания проблем .
Версия 1.0.0
Версия 1.0.0-beta02
12 марта 2025 г.
Выпущен androidx.metrics:metrics-performance:1.0.0-beta02
. Версия 1.0.0-beta02 содержит эти коммиты .
Исправления ошибок
- Исправление сбоев.
DelegatingFrameMetricsListener cannot be cast...
( Id891c , b/311218678 ).
Версия 1.0.0-бета01
10 января 2024 г.
API и функциональность этой библиотеки уже некоторое время стабильны. Этот выпуск просто переводит библиотеку в бета-версию.
Выпущен androidx.metrics:metrics-performance:1.0.0-beta01
. Версия 1.0.0-beta01 содержит эти коммиты.
Версия 1.0.0-альфа04
5 апреля 2023 г.
В этом выпуске JankStats обновляются до последних исправлений, которые включают более точную и полную информацию о времени.
Выпущен androidx.metrics:metrics-performance:1.0.0-alpha04
. Версия 1.0.0-alpha04 содержит эти коммиты.
Изменения API
-
cpuDuration
теперь более точный, а также новый totalDuration
на API31 ( I59ce8 , b/243694893 )
Версия 1.0.0-альфа03
27 июля 2022 г.
Выпущен androidx.metrics:metrics-performance:1.0.0-alpha03
. Версия 1.0.0-alpha03 содержит эти коммиты.
Этот выпуск содержит незначительные улучшения API, поскольку библиотека приближается к стадии бета-тестирования. Одно из изменений API удаляет Executor из фабричного метода createAndTrack()
для создания объекта JankStats
. Это имеет последствия для обратного вызова OnFrameListener
, поскольку этот прослушиватель теперь вызывается в потоке, который доставляет данные по кадрам в JankStats
(поток Main/UI в версиях, предшествующих API 24, и поток FrameMetrics
в API 24+). Более того, объект FrameData
, передаваемый прослушивателю, теперь повторно используется в каждом кадре, поэтому данные из этого объекта необходимо копировать и кэшировать в другом месте во время обратного вызова, поскольку этот объект должен считаться устаревшим, как только прослушиватель вернется.
Также были исправлены различные ошибки, в том числе некоторые проблемы с параллелизмом.
Наконец, исправление повторного использования FrameData
(упомянутое выше) означает, что теперь на каждый кадр выделяется нулевое количество ресурсов из-за доставки метрик кадра. Раньше было не так много выделений, но новый подход означает, что вы можете использовать JankStats
без каких-либо накладных расходов на покадровый сбор мусора в вашем приложении.
Изменения API
- Обновлены имена методов и параметров в
PerformanceMetricsState
, чтобы сделать результаты этих вызовов более понятными. ( И56да5 , б/233421985 ) - Добавлены тесты производительности для отслеживания распределений, устранены некоторые внутренние распределения, связанные с управлением состоянием и отчетностью. Обратите внимание, что
FrameData
, передаваемый слушателям, теперь считается изменчивым; эта структура будет повторно использоваться для следующего кадра, и данные будут надежными только до тех пор, пока прослушиватель не вернется. - Удален Executor из конструктора
JankStats
; прослушиватели теперь вызываются в любом потоке, в котором были получены внутренние данные. ( I12743 )
Исправления ошибок
- Исправлен сбой из-за двойного удаления
OnFrameMetricsAvailableListener
( I44094 , b/239457413 ). - Вернитесь к исходной логике публикации сообщений
OnPreDrawListener
в начале очереди для более согласованной и предсказуемой синхронизации кадров. ( I05a43 , б/233358407 ) - Исправлена ошибка
ConcurrentModificationException
, из-за которой список делегатов прослушивателя изменялся во время его повторения для отправки покадровых данных. ( Ib7693 , б/236612357 )
Версия 1.0.0-альфа02
29 июня 2022 г.
Выпущен androidx.metrics:metrics-performance:1.0.0-alpha02
. Версия 1.0.0-alpha02 содержит эти коммиты.
Изменения API
Исправления ошибок
- Исправлена проблема с синхронизацией, из-за которой состояния могли быть заменены новыми значениями до обработки кадров, где старое состояние было бы правильным ( aosp/2061892 , b/213499234 ).
- Исправлено исключение одновременной модификации при добавлении/удалении прослушивателей ( aosp/2092714 , b/213499234 )
- Сделаны вычисления startTime более точными ( aosp/2027704 , b/213245198 )
- Исправлена ошибка в реализации
FrameData.equals()
( aosp/2025866 , b/218296544 ).
Версия 1.0.0-альфа01
9 февраля 2022 г.
Выпущен androidx.metrics:metrics-performance:1.0.0-alpha01
. Версия 1.0.0-alpha01 содержит эти коммиты.
Новые возможности
- Библиотека
JankStats
предоставляет функциональные возможности для инструментирования и получения обратных вызовов в вашем приложении во время выполнения, что может помочь обнаружить реальные проблемы с производительностью. -
JankStats
сочетает в себе API, который позволяет легко вводить информацию о состоянии пользовательского интерфейса, с возможностями отслеживания и составления отчетов о производительности каждого кадра, что позволяет разработчикам понять не то, есть ли у приложения проблемы с производительностью, а когда и почему.
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 UTC."],[],[],null,["# Metrics\n=======\n\nAPI Reference \n[androidx.metrics.performance](/reference/kotlin/androidx/metrics/performance/package-summary) \nTrack and report various runtime metrics for your application \n\n| Latest Update | Stable Release | Release Candidate | Beta Release | Alpha Release |\n|----------------|----------------|-------------------|-----------------------------------------------------------------|---------------|\n| March 12, 2025 | - | - | [1.0.0-beta02](/jetpack/androidx/releases/metrics#1.0.0-beta02) | - |\n\nDeclaring dependencies\n----------------------\n\nTo add a dependency on Metrics, you must add the Google Maven repository to your\nproject. Read [Google's Maven repository](/studio/build/dependencies#google-maven)\nfor more information.\n\nAdd the dependencies for the artifacts you need in the `build.gradle` file for\nyour app or module: \n\n### Groovy\n\n```groovy\ndependencies {\n implementation \"androidx.metrics:metrics-performance:1.0.0-beta02\"\n}\n```\n\n### Kotlin\n\n```kotlin\ndependencies {\n implementation(\"androidx.metrics:metrics-performance:1.0.0-beta02\")\n}\n```\n\nFor more information about dependencies, see [Add build dependencies](/studio/build/dependencies).\n\nFeedback\n--------\n\nYour feedback helps make Jetpack better. Let us know if you discover new issues or have\nideas for improving this library. Please take a look at the\n[existing issues](https://issuetracker.google.com/issues?q=componentid:1109743%20status:open)\nin this library before you create a new one. You can add your vote to an existing issue by\nclicking the star button.\n\n[Create a new issue](https://issuetracker.google.com/issues/new?component=1109743&template=1621342)\n\nSee the [Issue Tracker documentation](https://developers.google.com/issue-tracker)\nfor more information.\n\nVersion 1.0.0\n-------------\n\n### Version 1.0.0-beta02\n\nMarch 12, 2025\n\n`androidx.metrics:metrics-performance:1.0.0-beta02` is released. Version 1.0.0-beta02 contains [these commits](https://android.googlesource.com/platform/frameworks/support/+log/7a45f0bc9e0a73744b3780a6f92e1b570de58bba..7a145e052ae61e272e91ffe285e9451b8ab71870/metrics/metrics-performance).\n\n**Bug Fixes**\n\n- Fix crashes `DelegatingFrameMetricsListener cannot be cast...` ([Id891c](https://android-review.googlesource.com/#/q/Id891c0cfdd7f45ef9e3b068644a113f39c8fc383), [b/311218678](https://issuetracker.google.com/issues/311218678)).\n\n### Version 1.0.0-beta01\n\nJanuary 10, 2024\n\nThe API and functionality of this library has been stable for some time. This release simply pushes the library to beta.\n\n`androidx.metrics:metrics-performance:1.0.0-beta01` is released. [Version 1.0.0-beta01 contains these commits.](https://android.googlesource.com/platform/frameworks/support/+log/a200cb82769634cecdb118ec4f0bfdf0b086e597..7a45f0bc9e0a73744b3780a6f92e1b570de58bba/metrics/metrics-performance)\n\n### Version 1.0.0-alpha04\n\nApril 5, 2023\n\nThis release updates JankStats to the latest fixes, which include more accurate and comprehensive timing information.\n\n`androidx.metrics:metrics-performance:1.0.0-alpha04` is released. [Version 1.0.0-alpha04 contains these commits.](https://android.googlesource.com/platform/frameworks/support/+log/a7f0710ad21f556f0dde9bf7bdab6d2135170fd4..a200cb82769634cecdb118ec4f0bfdf0b086e597/metrics/metrics-performance)\n\n**API Changes**\n\n- `cpuDuration` now more accurate, also new `totalDuration` on API31 ([I59ce8](https://android-review.googlesource.com/#/q/I59ce8c67f06a168f96893375c8aeca5516a55d81), [b/243694893](https://issuetracker.google.com/issues/243694893))\n\n### Version 1.0.0-alpha03\n\nJuly 27, 2022\n\n`androidx.metrics:metrics-performance:1.0.0-alpha03` is released. [Version 1.0.0-alpha03 contains these commits.](https://android.googlesource.com/platform/frameworks/support/+log/8094b683499b4098092c01028b55a38b49e357f2..a7f0710ad21f556f0dde9bf7bdab6d2135170fd4/metrics/metrics-performance)\n\n- This release contains minor API refinements as the library gets closer to beta. One of the API changes removes the Executor from the `createAndTrack()` factory method for creating a `JankStats` object. This has implications for the `OnFrameListener` callback, as that listener is now called on the thread which delivers the per-frame data to `JankStats` (the Main/UI thread on versions earlier than API 24, and the `FrameMetrics` thread on API 24+). Moreover, the `FrameData` object passed to the listener is now reused every frame, so data from that object must be copied and cached elsewhere during the callback, as that object should be considered obsolete as soon as the listener returns.\n\n- There were also various bug fixes, including some concurrency issues.\n\n- Finally, the fix to reuse `FrameData` (mentioned above) means that there are now zero allocations per frame due to frame metrics delivery. There weren't many allocations before, but the new approach means that you can use `JankStats` without incurring any per-frame GC overhead in your app.\n\n**API Changes**\n\n- Updated method and parameter names in `PerformanceMetricsState` to make the results of those calls clearer. ([I56da5](https://android-review.googlesource.com/#/q/I56da57b13818bf4077a64ab144222ce255f4539a), [b/233421985](https://issuetracker.google.com/issues/233421985))\n- Added benchmark tests to track allocations, eliminated some internal allocations related to state management and reporting. Note that `FrameData` passed to listeners is now considered volatile; that structure will be reused for the next frame and the data is only reliable until the listener returns.\n- Removed Executor from constructor for `JankStats`; listeners are now called on whatever thread the internal data was received upon. ([I12743](https://android-review.googlesource.com/#/q/I1274320bf29c171b82578868e657a3b01f7805c7))\n\n**Bug Fixes**\n\n- Fixed crash due to double-removal of `OnFrameMetricsAvailableListener` ([I44094](https://android-review.googlesource.com/#/q/I4409483d6e2f7287a0a93f521f68a4be9e22d969), [b/239457413](https://issuetracker.google.com/issues/239457413))\n- Return to original logic of posting `OnPreDrawListener` messages at front of queue, for more consistent and predictable frame timing. ([I05a43](https://android-review.googlesource.com/#/q/I05a434fe9453ea1be28d398e3eb284dd9b0cb64a), [b/233358407](https://issuetracker.google.com/issues/233358407))\n- Fixed `ConcurrentModificationException` bug where the list of listener delegates was being modified while it was also being iterated through to send per-frame data. ([Ib7693](https://android-review.googlesource.com/#/q/Ib769386f18e51dc6b58c935b42c5b8566c644abc), [b/236612357](https://issuetracker.google.com/issues/236612357))\n\n### Version 1.0.0-alpha02\n\nJune 29, 2022\n\n`androidx.metrics:metrics-performance:1.0.0-alpha02` is released. [Version 1.0.0-alpha02 contains these commits.](https://android.googlesource.com/platform/frameworks/support/+log/db2ecbef194afcddfaede22e1d884a8959a9277c..8094b683499b4098092c01028b55a38b49e357f2/metrics/metrics-performance)\n\n**API Changes**\n\n- Renamed `MetricsStateHolder` to just Holder (within `PerformanceMetricsState`): ([I5a4d9](https://android-review.googlesource.com/#/q/I5a4d9095520399a146e6fd78eb50c86a7051738b), [b/226565716](https://issuetracker.google.com/issues/226565716), [b/213499234](https://issuetracker.google.com/issues/213499234))\n\n**Bug Fixes**\n\n- Fixed timing issue where states could be replaced with new values before the frames had been processed where the old state would have been correct ([aosp/2061892](https://android-review.googlesource.com/c/platform/frameworks/support/+/2061892/), [b/213499234](https://issuetracker.google.com/issues/213499234))\n- Fixed concurrent modification exception in adding/removing listeners ([aosp/2092714](https://android-review.googlesource.com/c/platform/frameworks/support/+/2092714/), [b/213499234](https://issuetracker.google.com/issues/230388846))\n- Made startTime calculations more accurate ([aosp/2027704](https://android-review.googlesource.com/c/platform/frameworks/support/+/2027704/), [b/213245198](https://issuetracker.google.com/issues/213245198))\n- Fixed bug in `FrameData.equals()` implementation ([aosp/2025866](https://android-review.googlesource.com/c/platform/frameworks/support/+/2025866/), [b/218296544](https://issuetracker.google.com/issues/218296544))\n\n### Version 1.0.0-alpha01\n\nFebruary 9, 2022\n\n`androidx.metrics:metrics-performance:1.0.0-alpha01` is released. [Version 1.0.0-alpha01 contains these commits.](https://android.googlesource.com/platform/frameworks/support/+log/db2ecbef194afcddfaede22e1d884a8959a9277c/metrics/metrics-performance)\n\n**New Features**\n\n- The `JankStats` library provides functionality to instrument and receive callbacks in your application at runtime which can help find real world performance problems.\n- `JankStats` combines an API that makes it easy to inject information about UI state with capabilities for tracking and reporting per-frame performance to allow developers to understand not whether an application has performance issues, but when and why."]]