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

Hiệu quả sử dụng năng lượng đặc biệt quan trọng trên Wear OS. Nguyên tắc thiết kế Wear OS tập trung đáng kể vào mức sử dụng pin của thiết bị vì đồng hồ có kiểu dáng nhỏ, dành cho các tương tác ngắn.

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

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

  • Thiết kế ứng dụng của bạn phải sử dụng tốt hệ số hình dạng Wear OS. Không nên sao chép trực tiếp ứng dụng dành cho thiết bị di động của bạn.
  • Dùng ứng dụng di động hiện có để hỗ trợ một số trường hợp sử dụng nhất định. Ví dụ: Internet và tính năng đồng bộ hoá trên đồng hồ rất tốn kém; hãy cân nhắc xem thiết bị di động có thể thực hiện phần việc nặng nhọc hay không và thiết bị Wear OS có nhận được các thay đổi về dữ liệu hay không.
  • Thiết kế các trường hợp sử dụng cho những lượt tương tác ngắn hơn.
  • Hãy xem xét những sự kiện Wear OS mà bạn sử dụng và tần suất xảy ra những 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ụ cần 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 lệnh để tìm nạp trước dữ liệu, hình ảnh và bản cập nhật mà có thể người dùng muốn thấy trong ứng dụng của bạn.

Hướng dẫn về nguồn điện này giúp bạn hiểu thời điểm và cách thức hệ thống chạy ứng dụng cũng như cách bạn có thể hạn chế thời gian chạy ứng dụng và mức tiêu hao pin. Để tìm hiểu thêm về cách đạt được các thao tác cụ thể (chẳng hạn như tải ứng dụng hoặc cuộn qua danh sách), hãy truy cập vào 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.

Giám sát 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, hãy nhập lệnh sau vào cửa sổ dòng lệnh trên máy phát triển của bạn:

adb shell dumpsys batterystats

Thư viện trên GitHub có trình phân tích cú pháp số liệu thống kê về pin 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ĩ riêng về ứng dụng của mình, bạn nên nghĩ khái quát hơn về các sự kiện tiêu thụ pin trên thiết bị Wear OS.

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

Sự kiện Ảnh hưởng đến thời lượng pin Cách giảm thiểu
Truy cập 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 Không khuyến khích người dùng duy trì 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 gọi là chế độ môi trường xung quanh.
Sử dụng 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 GPS.
Duy trì mức sử dụng CPU ở mức cao Cao Sử dụng luồng bằng Jetpack Compose.
Truy cập cảm biến nhịp tim Medium Sử dụng thời gian thức của bộ xử lý khi nhận được 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 thiết bị khác qua Bluetooth Medium Đảm bảo các phiên hoạt động ngắn gọn.
Giữ chế độ khoá ở chế độ thức Medium Giảm việc tạo khoá chế độ thức 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 làm theo các nguyên tắc sử dụng màn hình sau:

  • Khoá trên màn hình: Tránh bất cứ khi nào có thể. Để kiểm thử, hãy tắt tuỳ chọn 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 đó, tập trung vào các hiệu ứng chuyển đổi ngắn để trông chuyên nghiệp hơn. Cụ thể, 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 dừng giữa các vòng lặp tối thiểu bằng chính ảnh động.
  • Thời gian thức ở chế độ môi trường xung quanh: Hỗ trợ chế độ luôn bật nếu cần, chẳng hạn như 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 kiểm tra để đảm bảo ứng dụng thực hiện những việc sau khi thiết bị đang ở chế độ môi trường xung quanh:

    • Giảm tỷ lệ phần trăm màn hình thiết bị được chiếu sáng.
    • Không hiện ảnh động.
    • Không cập nhật nội dung của màn hình, ngoại trừ trong lệnh gọi lại onAmbientUpdate().

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 đây:

  • Đảm bảo mức sử dụng ngắn gọn.
  • Tạo lô mọi thao tác liên quan để tăng tối đa thời gian quy trình của ứng dụng ở trạng thái rảnh.

Giảm thiểu khoá chế độ thức

Trong hầu hết trường hợp, hãy tránh bất kỳ thao tác nào ngăn ứng dụng của bạn chuyển sang chế độ ngủ, chẳng hạn như khoá chế độ thức. Ví dụ: trong các ứng dụng sức khoẻ và thể dục, các bài tập thể dục chạy trong thời gian dài không cần khoá chế độ thức. Sử dụng thời gian thức của bộ xử lý khi nhận các 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 khoá chế độ thức, chẳng hạn như khi ứng dụng thực hiện một trong những thao tác sau:

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

Battery Historian cho phép bạn xem từng lần xuất hiện của khoá chế độ thức dài, cũng như xem thông tin tóm tắt về tổng số lượng và khoảng thời gian khoá chế độ thức đang được giữ. Hãy kiểm tra số lượng và thời lượng của khoá chế độ thức mà ứng dụng của bạn lưu giữ, đồng thời so sánh thông tin này với các mẫu sử dụng tương tác của ứng dụng:

  • Kiểm tra khoá chế độ thức 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 tác vụ có bị chặn trên một số phần phụ thuộc hay không, chẳng hạn như khả năng sử dụng của mạng.

Kiểm tra cách ứng dụng chuyển sang trạng thái không hoạt động

Hãy xem xét hoạt động của ứng dụng đang hoạt động khi các sự kiện chính trên thiết bị xảy ra, chẳng hạn như sau:

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

Để phân tích hoạt động trong ứng dụng, hãy sử dụng những công cụ được hiển thị trong những 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 View > Tool Windows > Profiler (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à để biết 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 thực hiện tác vụ nào không 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.

Xác định 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ả sự kiện theo miền cụ thể. Đố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ể thấy các sự kiện đó trong Perfetto và so sánh thời gian của các sự kiện đó với mức sử dụng pin và CPU của ứng dụng.

Phân tích các công việc theo lịch biểu của ứng dụng

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

Sử dụng Battery Historian để kiểm tra việc thực thi các Lệnh theo lịch, cả tổng thể (Số liệu thống kê hệ thống > Số liệu thống kê của trình lập lịch công việc) và theo ứng dụng (Số liệu thống kê ứng dụng > Công việc đã lên lịch). Kiểm tra tổng số lượt 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.
  • Hãy kiểm tra để đảm bảo tổng thời gian thực thi khớp với thời gian thực thi dự kiến và không lâu hơn đáng kể.

Ngoài ra, hãy kiểm tra biểu đồ Battery Historian, xem từng mục nhập JobScheduler. Khi bạn giữ con trỏ trên một mục cụ thể, Battery Historian sẽ hiển thị chủ sở hữu của tác vụ thực thi. Hãy cân nhắc thực hiện những bước sau:

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

Cảm biến

Thiết bị Wear OS có nhiều cảm biến, 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ẻ phân nhóm 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ư sau:

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

Thử nghiệm huỷ đăng ký khỏi các 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 nhấn 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 từ phần trước để kiểm tra xem cảm biến có hiển thị chính xác là đã huỷ đăng ký hay không.

Lớp dữ liệu (Data Layer)

Khi sử dụng Data Layer API (API Lớp dữ liệu), mỗi quá trình 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 phải đánh thức để nhận dữ liệu. Vì những lý do này, hãy thận trọng khi sử dụng API này.

Dưới đây là một số phương pháp hay nhất khác để sử dụng API Lớp dữ liệu:

  • Hãy chờ đến khi ứng dụng hoạt động rồi mới thiết lập trình nghe bằng WearableListenerService.
  • Truyền các thay đổi về trạng thái thay vì định cấu hình cập nhật nhanh. Những thay đổi này về trạng thái cho phép thiết bị Wear OS thực hiện các phép tính toán 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 trạng thái cập nhật giao diện người dùng. Ví dụ: nếu màn hình hoạt động chỉ hiện "số kilômét đã chạy" đến một chữ số thập phân, đừng gửi thông tin thay đổi trạng thái đến Wear OS mỗi khi người dùng di chuyển một mét khác về phía trước.

Để phân tích mức sử dụng API Lớp dữ liệu trong ứng dụng của bạn, hãy chạy lệnh sau trong một cửa sổ đầu cuối 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:

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

Ứng dụng sức khoẻ và thể hình

Nếu bạn duy trì một ứng dụng sức khoẻ và thể dục, hãy 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 Battery Historian để xác minh hành vi chính xác ở chế độ môi trường xung quanh. Hãy kiểm tra để đảm bảo ứng dụng của bạn không đánh thức thường xuyên hơn mỗi phút một hoặc hai phút để nhận dữ liệu ExerciseUpdate.
  • Để 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 sức khoẻ và thể chất ở chế độ nền.

Ô và chức năng

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

  • Tắt tính năng tự động làm mới hoặc tăng tốc độ 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ông việc được lên lịch phù hợp để gửi nội dung cập nhật dữ liệu. Hãy chú ý để ngăn tốc độ cập nhật quá nhanh, vốn có thể khiến hệ thống lên lịch công việc lặp lại với tốc độ nhanh hơn so với khả năng 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 đó.
  • Không lên lịch cho thẻ thông tin hoặc chức năng của bạn khi người dùng không tương tác với thẻ thông tin hoặc chức năng đó.
  • Sử dụng phương pháp tiếp cận ngoại tuyến.
  • Chia sẻ một cơ sở dữ liệu duy nhất trên ứng dụng chính, thẻ thông tin và chức năng. Điều này giúp dữ liệu luôn nhất quán trên các nền tảng giao diện người dùng.