Công cụ Battery Historian cung cấp thông tin chi tiết về mức tiêu thụ pin của thiết bị theo thời gian. Ở cấp độ toàn hệ thống, công cụ này trực quan hoá các sự kiện liên quan đến nguồn từ hệ thống ghi nhật ký trong một giá trị thể hiện HTML. Ở cấp độ ứng dụng, công cụ cung cấp nhiều dữ liệu giúp bạn xác định hành vi làm tiêu hao pin trong ứng dụng.
Tài liệu này mô tả một số cách bạn có thể sử dụng Battery Historian để tìm hiểu về mức tiêu thụ pin. Tài liệu này bắt đầu bằng cách giải thích việc đọc dữ liệu trên toàn hệ thống mà công cụ Battery Historian báo cáo. Sau đó, tài liệu này giới thiệu cách bạn có thể sử dụng Battery Historian để chẩn đoán và khắc phục sự cố về hành vi của ứng dụng liên quan đến mức tiêu thụ pin. Cuối cùng, bài viết này cung cấp một số mẹo về các trường hợp mà công cụ Battery Historian có thể đặc biệt hữu ích.
Sử dụng chế độ xem toàn hệ thống
Công cụ Battery Historian cung cấp hình ảnh trên toàn hệ thống về các hành vi của ứng dụng và hệ thống, cùng với mối tương quan giữa những hành vi này với mức độ tiêu thụ pin theo thời gian. Chế độ xem như trong Hình 1 có thể giúp bạn chẩn đoán và xác định các vấn đề về mức sử dụng năng lượng của ứng dụng.
![Công cụ Battery Historian hiển thị những sự kiện trên toàn hệ thống có ảnh hưởng đến mức tiêu thụ điện năng.](https://developer.android.google.cn/static/topic/performance/images/generic-timeline.png?authuser=19&hl=vi)
Điều đặc biệt trong hình này là đường xu hướng đi xuống, nằm ngang, có màu đen thể hiện mức pin, được đo trên trục y. Ví dụ như ở đầu dòng Mức pin, vào khoảng 6:50 sáng, hình ảnh hiển thị cho thấy mức pin sụt giảm tương đối mạnh.
Hình 2 cung cấp ảnh cận cảnh của phần đó trong màn hình.
![Cận cảnh dòng thời gian của Battery Historian từ khoảng 6:50 sáng đến 7:20 sáng.](https://developer.android.google.cn/static/topic/performance/images/s-generic-closeup.png?authuser=19&hl=vi)
Ở đầu dòng Mức pin, khi pin sụt giảm mạnh, màn hình sẽ cho thấy 3 việc đang xảy ra: CPU đang chạy, một ứng dụng đã bật tính năng khoá ở chế độ thức và màn hình đang bật. Bằng cách này, Battery Historian giúp bạn hiểu những sự kiện nào đang xảy ra khi mức tiêu thụ pin cao. Sau đó, bạn có thể tập trung vào những hành vi này trong ứng dụng của mình và điều tra xem liệu bạn có thể làm gì để tối ưu hoá hay không.
Hình ảnh trên toàn hệ thống cũng có thể cung cấp nhiều gợi ý khác. Ví dụ như nếu thấy hệ thống phát sóng trên thiết bị di động thường xuyên tắt và bật, bạn có thể tối ưu hoá hành vi này thông qua API lập lịch thông minh, chẳng hạn như Trình điều phối JobScheduler hoặc Firebase Job.
Phần tiếp theo giải thích cách điều tra hành vi và sự kiện dành riêng cho ứng dụng của bạn.
Xem dữ liệu dành riêng cho ứng dụng
Ngoài dữ liệu cấp macro do chế độ xem toàn hệ thống cung cấp, Battery Historian cũng cung cấp các bảng và một số hình ảnh dữ liệu dành riêng cho từng ứng dụng chạy trên thiết bị của bạn. Dữ liệu dạng bảng bao gồm:
- Mức sử dụng pin ước tính của ứng dụng trên thiết bị.
- Thông tin mạng.
- Khoá ở chế độ thức.
- Dịch vụ.
- Thông tin quy trình.
Bảng này cung cấp 2 kích thước dữ liệu về ứng dụng của bạn. Trước tiên, bạn có thể tìm kiếm vị trí xếp hạng mức sử dụng pin của ứng dụng so với các ứng dụng khác. Để thực hiện việc này, hãy nhấp vào bảng Ước tính công suất thiết bị trong Bảng. Trong ví dụ này, chúng tôi sẽ kiểm tra một ứng dụng hư cấu có tên là Pug Power.
![Nghiên cứu ứng dụng nào tiêu thụ nhiều năng lượng nhất.](https://developer.android.google.cn/static/topic/performance/images/app-rankings.png?authuser=19&hl=vi)
Bảng trong Hình 3 cho thấy ứng dụng Pug Power có mức tiêu thụ pin lớn thứ 9 trên thiết bị này và là ứng dụng lớn thứ ba không thuộc Hệ điều hành. Dữ liệu này cho thấy ứng dụng này cần được điều tra kỹ hơn.
Để tìm dữ liệu cho một ứng dụng cụ thể, hãy nhập tên gói của ứng dụng đó vào phía dưới của hai trình đơn thả xuống trong mục Lựa chọn ứng dụng, nằm ở bên trái hình ảnh hiển thị.
![Nhập một ứng dụng cụ thể có dữ liệu cần xem.](https://developer.android.google.cn/static/topic/performance/images/dropdown.png?authuser=19&hl=vi)
Khi bạn chọn một ứng dụng cụ thể, các danh mục hình ảnh dữ liệu sau sẽ thay đổi để hiển thị dữ liệu dành riêng cho ứng dụng thay vì dữ liệu trên toàn hệ thống:
- SyncManager.
- Tiến trình trên nền trước.
- Khoá ở chế độ thức trong không gian của người dùng.
- Ứng dụng hàng đầu.
- JobScheduler.
- ActivityManager Proc.
Nếu ứng dụng của bạn đồng bộ hoá và thực thi các lệnh thường xuyên hơn mức cần thiết, việc trực quan hoá SyncManager và JobScheduler sẽ cho thấy rõ vấn đề đó. Bằng cách đó, hình ảnh trực quan hoá có thể nhanh chóng cho thấy cơ hội để tối ưu hoá hành vi của ứng dụng nhằm cải thiện hiệu suất pin.
Bạn cũng có thể thu thập thêm một phần dữ liệu hình ảnh dành riêng cho ứng dụng, Userspace Wakelock. Để đưa thông tin này vào báo cáo lỗi, hãy nhập lệnh sau vào cửa sổ dòng lệnh:
$ adb shell dumpsys batterystats --enable full-wake-history
Hình 5 và 6 cho thấy dữ liệu về Pug Power: Hình 5 cho thấy dữ liệu trực quan của ứng dụng và Hình 6 cho thấy dữ liệu dạng bảng tương ứng.
![Dữ liệu trực quan của ứng dụng giả định có tên Pug Power.](https://developer.android.google.cn/static/topic/performance/images/pug-visualization.png?authuser=19&hl=vi)
![Dữ liệu dạng bảng cho ứng dụng giả định có tên Pug Power.](https://developer.android.google.cn/static/topic/performance/images/pugspecificdata.png?authuser=19&hl=vi)
Việc xem hình ảnh trực quan sẽ không cho thấy ngay điều gì rõ ràng. Dòng JobScheduler cho biết ứng dụng này chưa lên lịch cho lệnh nào. Dòng SyncManager cho thấy ứng dụng chưa thực hiện quá trình đồng bộ hoá nào.
Tuy nhiên, việc kiểm tra phân đoạn Khoá ở chế độ thức của dữ liệu dạng bảng cho thấy Pug Power bật tính năng khoá ở chế độ thức tổng cộng hơn 1 giờ. Hành vi bất thường và tốn kém này có thể là nguyên nhân gây ra mức tiêu thụ điện năng cao của ứng dụng. Thông tin này giúp nhà phát triển tập trung vào một khía cạnh mà việc tối ưu hoá có khả năng giúp ích nhiều. Trong trường hợp này, tại sao ứng dụng lại có nhiều thời gian khoá ở chế độ thức đến vậy và làm sao nhà phát triển có thể cải thiện hành vi này?
Các trường hợp khác mà công cụ Battery Historian có thể trợ giúp
Có nhiều trường hợp khác Battery Historian có thể giúp bạn chẩn đoán cơ hội để cải thiện hành vi pin. Chẳng hạn như Battery Historian có thể cho bạn biết liệu ứng dụng của bạn có:
- Kích hoạt chuông báo thức quá thường xuyên (10 giây trở xuống).
- Liên tục định vị bằng GPS.
- Lên lịch cho các lệnh 30 giây một lần trở xuống.
- Tính năng lên lịch đồng bộ hoá mỗi 30 giây trở xuống.
- Sử dụng hệ thống phát sóng di động thường xuyên hơn mong đợi.