Tiết kiệm điện năng và pin

Hiệu suất sử dụng năng lượng đặc biệt quan trọng trên Wear OS. Các nguyên tắc thiết kế của Wear OS tập trung đáng kể vào mức sử dụng năng lượng của thiết bị vì đồng hồ là một thiết bị có hệ số hình dạng nhỏ, dùng cho các hoạt động tương tác ngắn.

So với các thiết bị di động lớn hơn, thiết bị Wear OS có pin nhỏ hơn, vì vậy, mọi mức tiêu hao pin đều dễ nhận thấy hơn. Hơn nữa, người dùng phải tốn nhiều công sức hơn để sạc thiết bị Wear OS so với thiết bị di động. Mặc dù người dùng có thể sạc thiết bị di động của họ theo nhiều khoảng thời gian trong ngày, nhưng họ cần tháo thiết bị Wear OS ra khỏi cơ thể trước khi sạc thiết bị đó.

Để cải thiện hiệu suất sử dụng năng lượng của ứng dụng, hãy làm theo các phương pháp hay nhất về thiết kế sau:

  • Thiết kế của ứng dụng phải tận dụng tốt hệ số hình dạng của Wear OS. Ứng dụng này không được sao chép trực tiếp ứng dụng di động của bạn.
  • Sử dụng ứng dụng di động hiện có để hỗ trợ một số trường hợp sử dụng. Ví dụ: Internet và hoạt động đồng bộ hoá trên đồng hồ tốn kém; hãy cân nhắc xem thiết bị di động có thể thực hiện các thao tác nặng hay không và thiết bị Wear OS nhận các thay đổi về dữ liệu.
  • Thiết kế các trường hợp sử dụng cho các hoạt động tương tác ngắn hơn.
  • Hãy cân nhắc những sự kiện Wear OS mà bạn sử dụng và tần suất xảy ra các sự kiện này.
  • Bất cứ khi nào có thể, hãy hoãn công việc của ứng dụng cho đến khi đồng hồ đang sạc. Điều này đặc biệt áp dụng cho các tác vụ sử dụng nhiều dữ liệu, chẳng hạn như đồng bộ hoá dữ liệu và sắp xếp cơ sở dữ liệu.

    Nếu thiết bị đang sạc và có kết nối Wi-Fi, hãy lên lịch cho các công việc để tìm nạp trước dữ liệu, hình ảnh và bản cập nhật mà người dùng có thể muốn xem trong ứng dụng của bạn.

Hướng dẫn về năng lượng này giúp bạn hiểu thời điểm và cách hệ thống chạy ứng dụng của bạn, cũng như cách bạn có thể giới hạn thời gian chạy và mức tiêu hao pin của ứng dụng. Để tìm hiểu thêm về cách thực hiện các hành động cụ thể (chẳng hạn như tải ứng dụng hoặc cuộn qua danh sách), hãy xem hướng dẫn liên quan đến hiệu suất, chẳng hạn như hướng dẫn về hiệu suất của Compose trên Wear OS.

Theo dõi mức sử dụng pin theo thời gian

Để phân tích số liệu thống kê về pin của một thiết bị Wear OS chạy ứng dụng của bạn, hãy nhập lệnh sau trong cửa sổ dòng lệnh trên máy phát triển của bạn:

adb shell dumpsys batterystats

Một thư viện trên GitHub có trình phân tích cú pháp số liệu thống kê về pin. Trình phân tích cú pháp này có thể hữu ích khi chạy cùng với lệnh này.

Các sự kiện ảnh hưởng đến thời lượng pin

Trước khi nghĩ cụ thể về ứng dụng của bạn, bạn nên nghĩ một cách tổng quát hơn về các sự kiện tiêu thụ năng lượng trên thiết bị Wear OS.

Bảng sau đây cho thấy hiệu ứng tương đối đối với thời lượng pin trên một số sự kiện phổ biến trong ứng dụng Wear OS. Mức tiêu hao năng lượng chính xác sẽ khác nhau giữa các thiết bị.

Sự kiện Tác động đến thời lượng pin Cách giảm thiểu
Truy cập vào mạng, bao gồm cả LTE và Wi-Fi Rất cao Hoãn quyền truy cập mạng không cần thiết cho đến khi thiết bị đang sạc.
Bật màn hình và bắt đầu chế độ tương tác Cao Đừng khuyến khích người dùng bật màn hình lâu hơn mức cần thiết. Cung cấp trải nghiệm sử dụng chế độ luôn bật, còn được gọi là chế độ môi trường xung quanh.
Truy cập vào cảm biến GPS Cao Nếu có thể, hãy đợi cho đến khi người dùng yêu cầu quyền truy cập vào GPS.
Duy trì mức sử dụng CPU cao Cao Tiêu thụ các luồng bằng Jetpack Compose.
Truy cập vào cảm biến tần số tim Trung bình Sử dụng thời gian thức của bộ xử lý khi nhận lệnh gọi lại từ API cảm biến, chẳng hạn như khi sử dụng Dịch vụ sức khoẻ trên Wear OS.
Truy cập vào một thiết bị khác qua Bluetooth Trung bình Giữ các phiên ngắn.
Giữ một wakelock Trung bình Giảm việc tạo wakelock theo cách thủ công và sử dụng WorkManager.

Giảm thiểu thời gian bật màn hình

Trong ứng dụng Wear OS, hãy tuân theo các nguyên tắc sử dụng màn hình sau:

  • Khoá bật màn hình: Tránh bất cứ khi nào có thể. Để kiểm thử, hãy tắt Màn hình luôn bật trong phần cài đặt hệ thống và quan sát xem màn hình có tắt trong khoảng thời gian chờ hay không.
  • Ảnh động: Giảm thiểu ảnh động phức tạp và thay vào đó, hãy tập trung vào các hiệu ứng chuyển đổi ngắn để có giao diện chuyên nghiệp hơn. Đặc biệt, hãy tránh các ảnh động và vòng lặp chạy trong thời gian dài. Nếu cần có vòng lặp, hãy thêm khoảng tạm dừng giữa các vòng lặp có thời lượng ít nhất bằng chính ảnh động đó.
  • Thời gian thức ở chế độ môi trường xung quanh: Hỗ trợ luôn bật nếu cần, chẳng hạn như đối với các trường hợp sử dụng thể dục. Nếu ứng dụng của bạn yêu cầu chế độ luôn bật, hãy làm theo các đề xuất sau cho Chế độ môi trường xung quanh.

Giảm thiểu mức sử dụng CPU

Trong ứng dụng Wear OS, hãy tuân theo các nguyên tắc sử dụng CPU sau:

  • Giữ mức sử dụng ngắn.
  • Gộp mọi thao tác liên quan để tối đa hoá thời gian mà quy trình của ứng dụng ở trạng thái rảnh.

Giảm thiểu wakelock

Trong hầu hết trường hợp, hãy tránh mọi thao tác ngăn ứng dụng của bạn chuyển sang trạng thái ngủ, chẳng hạn như wakelock. Ví dụ: trong các ứng dụng theo dõi thể chất, các bài tập chạy trong thời gian dài không cần wakelock. Sử dụng thời gian thức của bộ xử lý khi nhận lệnh gọi lại từ API cảm biến, chẳng hạn như khi sử dụng Dịch vụ sức khoẻ trên Wear OS.

Có một số trường hợp bạn có thể sử dụng wakelock, chẳng hạn như khi ứng dụng của bạn thực hiện một trong những việc sau:

  • Phát nội dung nghe nhìn ở chế độ nền.
  • Sử dụng WorkManager hoặc JobScheduler. (Hệ thống giữ một wakelock thay cho bạn khi chạy công việc ở chế độ nền.)

Để gỡ lỗi khoá chế độ thức cục bộ, hãy sử dụng Công cụ kiểm tra tác vụ trong nền của Android Studio, truy vết hệ thống hoặc adb shell dumpsys batterystats để kiểm tra từng lần xuất hiện wakelock dài, cũng như tóm tắt tổng số và thời lượng của các wakelock đang được giữ. So sánh số lượng và thời lượng của các wakelock mà ứng dụng của bạn giữ với các mẫu sử dụng tương tác của ứng dụng:

  • Kiểm tra các wakelock không mong muốn.
  • Nếu thời lượng dài hơn dự kiến, hãy cân nhắc xem công việc có bị chặn trên một số phần phụ thuộc hay không, chẳng hạn như tính khả dụng của mạng.

Kiểm tra cách ứng dụng của bạn trở nên không hoạt động

Hãy cân nhắc những việc mà ứng dụng đang hoạt động đang làm khi các sự kiện chính của thiết bị xảy ra, chẳng hạn như sau:

  • Màn hình tắt và thiết bị chuyển sang chế độ môi trường xung quanh.
  • Ứng dụng bị vuốt để đóng.

Để phân tích hoạt động của ứng dụng, hãy sử dụng các công cụ được trình bày trong các phần sau.

Trình phân tích năng lượng

Bạn có thể truy cập vào Trình phân tích năng lượng trong trình đơn Android Studio bằng cách chọn Chế độ xem > Cửa sổ công cụ > Trình phân tích tài nguyên:

  1. Kiểm tra dấu vết hệ thống khi màn hình tắt và thiết bị chuyển sang chế độ môi trường xung quanh.
  2. Tìm mọi công việc tiếp tục và mức sử dụng CPU của thiết bị.

Perfetto

Perfetto cho phép bạn ghi lại dấu vết rồi kiểm tra ứng dụng để xem có luồng nào đang thực hiện công việc khi màn hình tắt, thiết bị chuyển sang chế độ môi trường xung quanh hoặc người dùng đóng hoạt động của ứng dụng hay không.

Xác định các sự kiện tuỳ chỉnh để đánh dấu các sự kiện quan trọng của ứng dụng, bao gồm các sự kiện dành riêng cho miền. Đối với ứng dụng đa phương tiện, việc này sẽ bao gồm các tác vụ như tìm nạp danh sách phát, tải một mục nội dung nghe nhìn cụ thể xuống, bắt đầu phát và dừng phát. Bằng cách xác định các sự kiện này, bạn có thể xem chúng trong Perfetto và so sánh thời gian của chúng với mức sử dụng CPU và năng lượng của ứng dụng.

Bạn cũng có thể sử dụng CLI Android để cài đặt android-profiler kỹ năng (android skills add android-profiler). Kỹ năng này cho phép các tác nhân AI ghi lại dấu vết hệ thống Perfetto từ dòng lệnh và phân tích các thanh năng lượng, khoá chế độ thức và trạng thái tạm ngưng của thiết bị.

Phân tích các công việc đã lên lịch của ứng dụng

Các công việc đã lên lịch (sử dụng WorkManager) cho phép bạn thực hiện công việc ở chế độ nền trong ứng dụng của bạn. Mặc dù một số công việc ở chế độ nền phải được thực hiện định kỳ, nhưng đừng chạy công việc quá thường xuyên hoặc trong thời gian dài, vì điều này có thể làm hao pin của thiết bị.

Sử dụng Công cụ kiểm tra tác vụ trong nền của Android Studio (Chế độ xem > Cửa sổ công cụ > Kiểm tra ứng dụng) hoặc chạy adb shell dumpsys jobscheduler và adb shell dumpsys batterystats để kiểm tra việc thực thi các công việc và worker đã lên lịch. Kiểm tra tần suất thực thi và tổng thời lượng:

  • Nếu một công việc chạy rất thường xuyên, hãy cân nhắc giảm tần suất này.
  • Kiểm tra để đảm bảo tổng thời gian thực thi khớp với những gì bạn mong đợi và không dài hơn đáng kể.

Bạn cũng có thể ghi lại dấu vết hệ thống để tương quan việc thực thi công việc với hoạt động của ứng dụng theo dòng thời gian. Hãy cân nhắc những điểm sau:

  • Đối với ứng dụng của bạn, thời lượng thực thi phải hợp lý.
  • Cân nhắc xem các công việc xảy ra khi ứng dụng của bạn đang chạy hay các công việc này đại diện cho công việc ở chế độ nền định kỳ.

Cảm biến

Thiết bị Wear OS có nhiều cảm biến khác nhau, chẳng hạn như GPS. Trong hầu hết trường hợp, hãy sử dụng Dịch vụ sức khoẻ trên Wear OS thay vì tương tác trực tiếp với SensorManager. Trong nhiều trường hợp, Dịch vụ sức khoẻ sẽ gộp dữ liệu một cách thông minh để cải thiện hiệu suất pin.

Để phân tích mức sử dụng cảm biến trong ứng dụng của bạn, hãy chạy lệnh sau trong cửa sổ dòng lệnh trên máy phát triển của bạn:

adb shell dumpsys sensorservice

Kết quả của lệnh này cho thấy những điều sau:

  • Các lần đăng ký cảm biến hiện tại và trước đó.
  • Cấu hình cảm biến, bao gồm cả việc gộp nếu được thiết lập.
  • Dữ liệu được lấy mẫu gần đây.

Kiểm thử việc huỷ đăng ký khỏi cảm biến

Để kiểm tra xem ứng dụng của bạn có ngừng tìm nạp dữ liệu cảm biến như dự kiến hay không, hãy kiểm thử các trường hợp sau:

  1. Vuốt để đóng ứng dụng.
  2. Dùng lòng bàn tay chạm vào màn hình. Thao tác này sẽ tắt màn hình hoặc đặt màn hình ở chế độ môi trường xung quanh.

Sử dụng lệnh ADB trong phần trước để kiểm tra xem cảm biến có hiển thị chính xác là chưa đăng ký hay không.

Lớp dữ liệu

Khi sử dụng Data Layer API, mỗi lần truyền sẽ sử dụng một số năng lượng. Cụ thể, nếu bạn sử dụng API này để gửi dữ liệu, thì ứng dụng của bạn phải thức để nhận dữ liệu. Vì những lý do này, hãy sử dụng API này một cách thận trọng.

Một số phương pháp hay nhất khác để sử dụng Data Layer API (API Lớp dữ liệu) bao gồm những điều sau:

  • Đợi cho đến khi ứng dụng của bạn hoạt động rồi mới thiết lập trình nghe bằng WearableListenerService.
  • Đừng sử dụng Data Layer API (API Lớp dữ liệu) để ping đồng hồ định kỳ nhằm kiểm tra xem thiết bị hoặc ứng dụng đồng hành có dùng được hay không. Bằng cách gửi thông báo nhiều lần, ứng dụng của bạn sẽ đánh thức đài và quy trình ứng dụng từ xa, làm hao pin của thiết bị nhiều hơn mức cần thiết. Thay vào đó, hãy sử dụng CapabilityClient để phát hiện tính khả dụng và các chức năng của thiết bị hoặc chỉ gửi thông báo khi trạng thái thay đổi.
  • Truyền các thay đổi về trạng thái thay vì định cấu hình các bản cập nhật nhanh. Những thay đổi về trạng thái này cho phép thiết bị Wear OS thực hiện các phép tính dữ liệu cục bộ, chẳng hạn như khi một phiên tập thể dục bắt đầu.

    Chỉ truyền các thay đổi về trạng thái giúp cập nhật giao diện người dùng. Ví dụ: nếu màn hình hoạt động của bạn chỉ hiển thị "số ki-lô-mét đã chạy" đến một chữ số thập phân, thì đừng gửi thay đổi về trạng thái đến Wear OS mỗi khi người dùng chạy thêm một mét.

Để phân tích mức sử dụng Data Layer API (API Lớp dữ liệu) trong ứng dụng của bạn, hãy chạy lệnh sau trong cửa sổ dòng lệnh trên máy phát triển của bạn:

adb shell dumpsys activity service WearableService

Kết quả của lệnh này bao gồm những điều sau:

  • RpcService: Cho phép bạn xem tần suất và đường dẫn nào đang được gọi bằng MessageClient.
  • DataService: Cho phép bạn xem tần suất các mục dữ liệu đang được thiết lập bằng DataClient.

Ứng dụng theo dõi sức khoẻ và thể chất

Nếu bạn duy trì một ứng dụng theo dõi sức khoẻ và thể chất, hãy sử dụng Dịch vụ sức khoẻ để tối ưu hoá việc sử dụng cảm biến của ứng dụng.

  • Đối với ExerciseClient, hãy sử dụng dấu vết hệ thống, Perfetto hoặc adb shell dumpsys batterystats để xác minh hành vi chính xác ở chế độ môi trường xung quanh. Kiểm tra để đảm bảo ứng dụng của bạn không thức dậy thường xuyên hơn mỗi phút hoặc hai phút để nhận dữ liệu ExerciseUpdate.
  • Đối với hoạt động theo dõi sức khoẻ tổng quát cả ngày, hãy sử dụng PassiveMonitoringClient, như mô tả trong hướng dẫn về cách theo dõi dữ liệu về sức khoẻ và dữ liệu thể chất ở chế độ nền.

Ô và chức năng

Nếu ứng dụng của bạn hỗ trợ ô hoặc chức năng, hãy làm theo các phương pháp hay nhất sau:

  • Tắt tính năng làm mới tự động hoặc tăng tần suất làm mới lên 2 giờ trở lên.
  • Sử dụng Giải pháp gửi thông báo qua đám mây của Firebase (FCM) hoặc các công việc được lên lịch phù hợp để gửi bản cập nhật dữ liệu. Hãy cẩn thận để ngăn tần suất cập nhật nhanh, vì điều này có thể khiến hệ thống lên lịch cho công việc lặp lại với tần suất nhanh hơn so với tần suất mà người dùng hoặc nền tảng có thể truy cập vào dữ liệu cần thiết để thực hiện công việc đó.
  • Đừng lên lịch cho công việc đối với ô hoặc chức năng khi người dùng không tương tác với ô hoặc chức năng đó.
  • Sử dụng các phương pháp ưu tiên ngoại tuyến.
  • Chia sẻ một cơ sở dữ liệu duy nhất trên ứng dụng chính, ô và chức năng. Điều này cũng giúp dữ liệu nhất quán trên các nền tảng giao diện người dùng.