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

Hiệu quả sử dụng pin đặc biệt quan trọng trên Wear OS. Các 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ó hệ số hình dạng 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, nên mọi tình trạng tiêu hao pin đều dễ nhận thấy hơn. Hơn nữa, người dùng cần sạc thiết bị Wear OS nhiều 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 vào nhiều khoảng thời gian trong ngày, nhưng họ cần tách thiết bị Wear OS ra khỏi cơ thể trước khi sạc thiết bị.

Để cải thiện hiệu quả 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 đây:

  • Thiết kế của ứng dụng phải sử dụng tốt kiểu dáng 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 tại của bạn để trợ giúp cho một số trường hợp sử dụng nhất định. Ví dụ: Internet và quá trình đồ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ế trường hợp sử dụng của bạn để đạt được số lượt 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 cho các công việc để tìm nạp 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 thấy trong ứng dụng của bạn.

Hướng dẫn về nguồn này giúp bạn nắm được 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ể 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 đạt được các thao tác cụ thể (chẳng hạn như tải ứng dụng hoặc cuộn qua một danh sách), hãy truy cập 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 thiết bị Wear OS chạy ứng dụng của bạn, 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. 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 xem xét cụ thể về ứng dụng của mình, bạn nên suy nghĩ tổng 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 thấy tác động tương đối đối với thời lượng pin trên một số sự kiện phổ biến trong các ứng dụng Wear OS. Mức tiêu hao năng lượng 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 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.
Truy cập 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 tần số tim Medium 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 thiết bị khác qua Bluetooth Medium Đảm bảo các phiên hoạt động ngắn gọn.
Duy trì 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 hiển thị 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 đây:

  • Khoá màn hình: Tránh dùng bất cứ khi nào có thể. Để kiểm tra, hãy tắt chế độ 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 có một vòng lặp, hãy thêm một điểm tạm dừng giữa các vòng lặp, í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ư trong các trường hợp sử dụng thể chất. 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 rằng ứng dụng sẽ 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 thiết bị được chiếu sáng.
    • Không hiện ảnh động.
    • Không cập nhật nội dung trên 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 thủ các nguyên tắc sử dụng CPU sau đây:

  • Sử dụng ngắn gọn.
  • Tạo lô cho mọi hoạt động liên quan để tối đa hoá 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 trạng thái 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 sẽ không cần tính năng khoá ở chế độ thức. 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.

Trong một số trường hợp, bạn có thể bật tính nă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 khoá chế độ thức khi chạy công việc ở chế độ nền.)

Battery Historian cho phép bạn thấy từng lần xuất hiện của 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à khoảng thời gian khoá ở chế độ thức đang được giữ. 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ữ và 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 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 hoạt động của mạng.

Kiểm tra xem ứng dụng của bạn ngừng hoạt động như thế nào

Hãy xem xét những việc ứng dụng đang hoạt động sẽ làm 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 bị vuốt để bỏ qua.

Để 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 Energy Profiler (Trình phân tích năng lượng) trong trình đơn của 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 vẫn 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, sau đó kiểm tra ứng dụng để xem có luồng nào đang thực hiện tác vụ hay 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ả các sự kiện theo miền cụ thể. Đối với ứng dụng đa phương tiện, việc này có thể 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ể 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 các sự kiện đó với mức sử dụng CPU và pin 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 công việc đã lên lịch bằng WorkManager, cho phép bạn thực hiện công việc trong nền trong ứng dụng của mình. Mặc dù một số công việc trong nền phải định kỳ, nhưng đừng chạy các 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 tổng thể quá trình thực thi của Công việc theo lịch biểu (Số liệu thống kê hệ thống > Số liệu thống kê về công việc theo lịch biểu) và theo ứng dụng (Số liệu thống kê của ứng dụng > Công việc đã lên lịch). Kiểm tra tổng số lượng 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 thời gian bạn 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 cho biết chủ sở hữu của công việc thực thi. 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ý.
  • 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ẻ 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ư 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 tạo lô nếu được đặt.
  • Dữ liệu được lấy mẫu gần đây.

Kiểm thử khả năng 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 tình huống 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 ở phần trước để kiểm tra xem cảm biến có hiển thị chính xác trạng thái đã huỷ đăng ký hay không.

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

Khi sử dụng API Lớp dữ liệu, mỗi quá trình truyền sử dụng một số nguồn. 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.

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

  • Chờ cho đế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 tính năng 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 phiên tập thể dục bắt đầu.

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

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 ứng dụng dùng cảm biến.

  • Đố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. Kiểm tra để đảm bảo ứng dụng 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ẻ tổng thể 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à hoạt động thể dục ở 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 chức năng, hãy làm theo các phương pháp hay nhất sau đây:

  • 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 ngăn chặn tốc độ cập nhật quá nhanh vì 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 truy cập của người dùng hoặc nền tảng vào dữ liệu cần thiết để thực hiện công việc đó.
  • Không lên lịch thao tá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 phương pháp tiếp cận ư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, 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.