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

Tiết kiệm pin đặc biệt quan trọng trên Wear OS. Nguyên tắc thiết kế của Wear OS tập trung đáng kể vào mức sử dụng pin của thiết bị vì đồng hồ có kích thước nhỏ, dành 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 hiện tượng 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 pin 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ế ứng dụng của bạn phải tận dụng tốt kiểu 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 nhất định. Ví dụ: Internet và tính năng đồng bộ hoá trên đồng hồ có chi phí cao; hãy cân nhắc xem thiết bị di động có thể thực hiện các tác vụ nặng 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ế trường hợp sử dụng của bạn cho các tương tác ngắn hơn.
  • Hãy cân nhắc xem bạn sử dụng sự kiện Wear OS nào 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 trì 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 công việc để tải trước dữ liệu, hình ảnh và nội dung 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ề nguồn điện này giúp bạn hiểu thời điểm và cách hệ thống chạy ứng dụng, cũng như cách bạn có thể giới hạn thời gian chạy và mức hao pin của ứng dụng. Để tìm hiểu thêm về cách thực hiện 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.

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:

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ê pin. Bạn có thể chạy trình phân tích cú pháp nà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 suy nghĩ cụ thể về ứng dụng của bạn, bạn nên suy nghĩ chung 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 tác động tương đối đến thời lượng pin trên một số sự kiện phổ biến trong ứng dụng Wear OS. Mức hao tổn pin chính xác sẽ khác nhau tuỳ theo thiết bị.

Sự kiện Tác độ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 việc 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 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 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 đến khi người dùng yêu cầu quyền truy cập GPS.
Giữ mức sử dụng CPU ở mức cao Cao Sử dụng Jetpack Compose để tiêu thụ luồng.
Truy cập 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ữ cho các phiên ngắn gọn.
Giữ khoá chế độ thức Trung bình 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 tuân theo các nguyên tắc sử dụng màn hình sau:

  • Phương thức khoá màn hình bật: Tránh sử dụng bất cứ khi nào có thể. Để kiểm thử, hãy tắt chế độ 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 các ảnh động chi tiết, 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 lặp lại, hãy thêm một khoảng tạm dừng giữa các vòng lặp ít nhất bằng thời lượng của 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ư đối với các trường hợp sử dụng liên quan đến thể dục. Nếu ứng dụng của bạn yêu cầu luôn bật, hãy kiểm tra để đảm bảo ứng dụng của bạn thực hiện những việc sau khi thiết bị ở chế độ môi trường xung quanh:

    • Giảm tỷ lệ phần trăm màn hình của thiết bị được chiếu sáng.
    • Không hiển thị ả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:

  • Giữ cho thời lượng sử dụng ngắn.
  • Thực hiện hàng loạt 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 tình trạng khoá ở chế độ thức

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ư lệ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 kéo 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 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 của bạn 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ữ trạng thái khoá chế độ thức khi chạy công việc ở chế độ nền.)

Battery Historian cho phép bạn xem các lần xảy ra riêng lẻ của chế độ khoá chế độ thức trong thời gian dài, cũng như thông tin tóm tắt về tổng số và thời lượng của chế độ khoá chế độ thức đang diễn ra. Kiểm tra số lượng và thời lượng của các khoá chế độ thức mà ứng dụng của bạn 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 các tình trạng 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 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ư khả năng sử dụng 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 trên thiết bị xảy ra, chẳng hạn như:

  • 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 trong ứ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 Power Profiler (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 đang 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 nào 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 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ác sự kiện theo miền cụ thể. Đối với ứng dụng đa phương tiện, điều 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 đa phương tiện cụ thể, 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 các sự kiện đó với CPU và mức sử dụng năng lượng của ứng dụng.

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

Công việc đượ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. Mặc dù một số công việc ở chế độ nền phải đị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 tiêu hao pin của thiết bị.

Sử dụng Battery Historian để kiểm tra quá trình thực thi Công việc theo lịch, cả tổng thể (Thống kê hệ thống > Thống kê trình lập lịch công việc) và theo ứng dụng (Thống kê ứng dụng > Công việc theo lịch). Kiểm tra tổng số 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 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 xét 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 công việc đang thực thi. Hãy cân nhắc thực hiện những bước sau:

  • Đối với ứng dụng, 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 khác nhau, chẳng hạn như GPS. Trong hầu hết các 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ẽ phân lô 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 thông tin 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ả tính năng tạo lô nếu được đặt.
  • 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. Nhấn vào màn hình bằng lòng bàn tay. 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 (Data Layer)

Khi sử dụng Data Layer API, mỗi lần truyền sẽ tiêu tốn một lượng điện năng. Cụ thể, nếu bạn sử dụng API này để gửi dữ liệu, ứng dụng của bạn phải thức dậy để 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.

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

  • Chờ đến khi ứng dụng của bạn đang hoạt động thì 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á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 bắt đầu một phiên tập thể dục.

    Chỉ truyền các thay đổi về 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 của bạn chỉ hiển thị "km đã chạy" đến một chữ số thập phân, đừng gửi thay đổi trạng thái đến Wear OS mỗi khi người dùng di chuyển thêm một mét.

Để phân tích mức sử dụng API Lớp dữ liệu trong ứng dụng, hãy chạy lệnh sau trong cửa sổ dòng lệnh trên máy phát triể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 nào được gọi bằng MessageClient.
  • DataService: Cho phép bạn xem tần suất các mục dữ liệu được thiết lập bằng cách sử dụng DataClient.

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

Nếu bạn duy trì một ứng dụng sức khoẻ và thể dục, 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 Battery Historian để xác minh hành vi chính xác trong chế độ môi trường xung quanh. 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 được dữ liệu ExerciseUpdate.
  • Để theo dõi sức khoẻ chung 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ợ thẻ thông tin hoặc chức năng, hãy làm theo các phương pháp hay nhất sau:

  • Tắt chế độ làm mới tự động hoặc tăng tốc độ làm mới lên thành 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 theo lịch phù hợp để gửi thông tin cập nhật về dữ liệu. Hãy cẩn thận để tránh tốc độ cập nhật nhanh, điều này 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 mức 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 công việc cho thẻ thông tin hoặc chức năng 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 các phương pháp ưu tiên chế độ ngoại tuyến.
  • Chia sẻ một cơ sở dữ liệu trên ứng dụng chính, thẻ thông tin và chức năng. Điều này cũng 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.