Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Chỉ số
Theo dõi và báo cáo nhiều chỉ số thời gian chạy cho ứng dụng.
Bản cập nhật mới nhất |
Bản phát hành ổn định |
Bản phát hành dùng thử |
Bản phát hành beta |
Bản phát hành alpha |
Ngày 27 tháng 8 năm 2025 |
- |
- |
1.0.0-beta03 |
- |
Khai báo phần phụ thuộc
Để thêm một phần phụ thuộc trên Metrics, bạn phải thêm kho lưu trữ Google Maven vào
dự án. Đọc nội dung Kho lưu trữ Maven của Google để biết thêm thông tin.
Thêm các phần phụ thuộc cho cấu phần phần mềm bạn cần trong tệp build.gradle
cho ứng dụng hoặc mô-đun:
Groovy
dependencies {
implementation "androidx.metrics:metrics-performance:1.0.0-beta03"
}
Kotlin
dependencies {
implementation("androidx.metrics:metrics-performance:1.0.0-beta03")
}
Để biết thêm thông tin về các phần phụ thuộc, hãy xem bài viết Thêm phần phụ thuộc vào bản dựng.
Ý kiến phản hồi
Ý kiến phản hồi của bạn có thể giúp chúng tôi cải thiện Jetpack. Hãy cho chúng tôi biết nếu bạn phát hiện lỗi mới hoặc có ý tưởng cải thiện thư viện này. Vui lòng xem các lỗi hiện có trong thư viện này trước khi báo một lỗi mới. Bạn có thể thêm lượt bình chọn cho lỗi hiện có bằng cách nhấp vào nút dấu sao.
Báo lỗi mới
Hãy xem tài liệu về công cụ theo dõi lỗi để biết thêm thông tin.
Phiên bản 1.0.0
Phiên bản 1.0.0-beta03
Ngày 27 tháng 8 năm 2025
Phát hành androidx.metrics:metrics-performance:1.0.0-beta03
. Phiên bản 1.0.0-beta03 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục
IllegalArgumentException
("cố gắng xoá OnFrameMetricsAvailableListener
chưa từng được thêm"). Không có nỗ lực nào được thực hiện để ghi lại thời gian khung khi cửa sổ không được tăng tốc phần cứng, vì Window.OnFrameMetricsAvailableListener
không hỗ trợ việc này. (I8fef2, b/436880904)
Phiên bản 1.0.0-beta02
Ngày 12 tháng 3 năm 2025
Phát hành androidx.metrics:metrics-performance:1.0.0-beta02
. Phiên bản 1.0.0-beta02 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục sự cố
DelegatingFrameMetricsListener cannot be cast...
(Id891c, b/311218678).
Phiên bản 1.0.0-beta01
Ngày 10 tháng 1 năm 2024
API và chức năng của thư viện này đã ổn định trong một thời gian. Bản phát hành này chỉ đơn giản là chuyển thư viện sang giai đoạn thử nghiệm beta.
Phát hành androidx.metrics:metrics-performance:1.0.0-beta01
. Phiên bản 1.0.0-beta01 bao gồm các thay đổi sau.
Phiên bản 1.0.0-alpha04
Ngày 5 tháng 4 năm 2023
Bản phát hành này cập nhật JankStats lên các bản sửa lỗi mới nhất, bao gồm cả thông tin về thời gian chính xác và toàn diện hơn.
Phát hành androidx.metrics:metrics-performance:1.0.0-alpha04
. Phiên bản 1.0.0-alpha04 bao gồm các thay đổi sau.
Thay đổi về API
cpuDuration
hiện chính xác hơn, cũng có totalDuration
mới trên API31 (I59ce8, b/243694893)
Phiên bản 1.0.0-alpha03
Ngày 27 tháng 7 năm 2022
Phát hành androidx.metrics:metrics-performance:1.0.0-alpha03
. Phiên bản 1.0.0-alpha03 bao gồm các thay đổi sau.
Bản phát hành này chứa một số nội dung tinh chỉnh nhỏ trong API khi thư viện sắp gần đến giai đoạn thử nghiệm beta. Một trong những thay đổi về API sẽ xóa Trình thực thi khỏi phương thức ban đầu của createAndTrack()
để tạo đối tượng JankStats
. Điều này ảnh hưởng đến lệnh gọi lại OnFrameListener
, vì trình nghe đó hiện được gọi trên luồng (thread) sẽ phân phối dữ liệu trên mỗi khung hình cho JankStats
(luồng Chính/giao diện người dùng trên các phiên bản trước API 24 và chuỗi FrameMetrics
trên API 24 trở lên). Hơn nữa, đối tượng FrameData
được truyền đến trình nghe hiện được sử dụng lại trong mọi khung. Vì vậy, dữ liệu từ đối tượng đó phải được sao chép và lưu vào bộ nhớ đệm ở nơi khác trong quá trình gọi lại, vì đối tượng đó sẽ được coi là đã lỗi thời ngay khi trình nghe trả về.
Ngoài ra, chúng tôi cũng sửa nhiều lỗi khác nhau, trong đó có một số vấn đề đồng thời.
Cuối cùng, bản sửa lỗi để sử dụng lại FrameData
(đã đề cập ở trên) có nghĩa là hiện không có lượt phân bổ nào cho mỗi khung do việc phân phối chỉ số khung. Trước đây không có nhiều phương thức phân bổ, nhưng phương pháp mới có nghĩa là bạn có thể sử dụng JankStats
mà không phải chịu bất kỳ chi phí GC nào cho mỗi khung hình trong ứng dụng của mình.
Thay đổi API
- Cập nhật tên phương thức và tham số trong
PerformanceMetricsState
để kết quả của các lệnh gọi đó rõ ràng hơn. (I56da5, b/233421985)
- Thêm các thử nghiệm đo điểm chuẩn để theo dõi quá trình phân bổ, loại bỏ một số quá trình phân bổ nội bộ liên quan đến việc quản lý và báo cáo trạng thái. Lưu ý là
FrameData
được truyền đến trình nghe hiện được cho là không ổn định; cấu trúc đó sẽ được sử dụng lại cho khung tiếp theo và dữ liệu chỉ đáng tin cậy cho đến khi trình nghe trả về.
- Xóa Trình thực thi khỏi hàm khởi tạo cho
JankStats
; trình nghe hiện được gọi trên bất kỳ luồng nào mà dữ liệu nội bộ đã nhận được. (I12743)
Sửa lỗi
- Khắc phục sự cố do xóa hai lần của
OnFrameMetricsAvailableListener
(I44094, b/239457413)
- Quay lại logic ban đầu của việc đăng thông báo
OnPreDrawListener
ở đầu hàng đợi để có thời gian kết xuất khung nhất quán và dễ dự đoán hơn. (I05a43, b/233358407)
- Khắc phục lỗi
ConcurrentModificationException
trong đó danh sách trình nghe được ủy quyền đang được sửa đổi trong khi nó cũng lặp lại để gửi dữ liệu trên mỗi khung hình. (Ib7693, b/236612357)
Phiên bản 1.0.0-alpha02
Ngày 29 tháng 6 năm 2022
Phát hành androidx.metrics:metrics-performance:1.0.0-alpha02
. Phiên bản 1.0.0-alpha02 bao gồm các thay đổi sau.
Thay đổi API
Sửa lỗi
Phiên bản 1.0.0-alpha01
Ngày 9 tháng 2 năm 2022
Phát hành androidx.metrics:metrics-performance:1.0.0-alpha01
. Phiên bản 1.0.0-alpha01 bao gồm các thay đổi sau.
Tính năng mới
- Thư viện
JankStats
cung cấp chức năng đo lường và nhận lệnh gọi lại trong ứng dụng của bạn trong thời gian chạy, nhờ đó, bạn có thể tìm thấy các vấn đề về hiệu suất trong thực tế.
JankStats
kết hợp một API giúp bạn dễ dàng chèn thông tin về trạng thái giao diện người dùng với các tính năng theo dõi và báo cáo hiệu suất trên mỗi khung hình nhằm giúp nhà phát triển nắm được liệu một ứng dụng có gặp vấn đề về hiệu suất hay không, không bao gồm thời điểm và lý do.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-08-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-08-27 UTC."],[],[],null,["Metrics \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| August 27, 2025 | - | - | [1.0.0-beta03](/jetpack/androidx/releases/metrics#1.0.0-beta03) | - |\n\nDeclaring dependencies\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\nGroovy \n\n```groovy\ndependencies {\n implementation \"androidx.metrics:metrics-performance:1.0.0-beta03\"\n}\n```\n\nKotlin \n\n```kotlin\ndependencies {\n implementation(\"androidx.metrics:metrics-performance:1.0.0-beta03\")\n}\n```\n\nFor more information about dependencies, see [Add build dependencies](/studio/build/dependencies).\n\nFeedback\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\nVersion 1.0.0-beta03\n\nAugust 27, 2025\n\n`androidx.metrics:metrics-performance:1.0.0-beta03` is released. Version 1.0.0-beta03 contains [these commits](https://android.googlesource.com/platform/frameworks/support/+log/7a145e052ae61e272e91ffe285e9451b8ab71870..cd8ce2bdb21194a81a76325a8e65dad5d7e28681/metrics/metrics-performance).\n\n**Bug Fixes**\n\n- Fix `IllegalArgumentException`(\"attempt to remove `OnFrameMetricsAvailableListener` that was never added\"). No attempt is made to record frame timing when a window isn't hardware accelerated, as this isn't supported by `Window.OnFrameMetricsAvailableListener`. ([I8fef2](https://android-review.googlesource.com/#/q/I8fef2d16449a9a50a2092200d28e45baae537e22), [b/436880904](https://issuetracker.google.com/issues/436880904))\n\nVersion 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\nVersion 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\nVersion 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\nVersion 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\nVersion 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\nVersion 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."]]