Lập kế hoạch để đạt hiệu suất

Bạn nên tuân thủ các nguyên tắc sau đây về phương pháp hay nhất để đảm bảo ứng dụng của mình hoạt động hiệu quả cùng với Health Connect.

Ghi dữ liệu

Các ứng dụng chỉ được ghi dữ liệu có nguồn chính chủ vào Health Connect.

Nếu dữ liệu trong ứng dụng của bạn được nhập từ một ứng dụng khác, thì ứng dụng đó có trách nhiệm ghi dữ liệu tương ứng vào Health Connect.

Bạn cũng nên triển khai logic giúp xử lý các trường hợp ngoại lệ của hoạt động ghi, chẳng hạn như dữ liệu nằm ngoài ranh giới hoặc lỗi hệ thống nội bộ. Bạn có thể áp dụng chiến lược thời gian đợi và chiến lược thử lại cho cơ chế lên lịch công việc. Nếu như cuối cùng không ghi được dữ liệu vào Health Connect, hãy đảm bảo rằng ứng dụng có thể vượt qua điểm xuất đó. Đừng quên ghi nhật ký và báo cáo lỗi để hỗ trợ hoạt động chẩn đoán.

Khi theo dõi dữ liệu, tuỳ vào cách ứng dụng của bạn ghi dữ liệu, bạn có thể làm theo một vài gợi ý sau đây.

Theo dõi thụ động

Hình thức này bao gồm cả những ứng dụng tiến hành theo dõi thụ động sức khoẻ hoặc hoạt động thể dục, chẳng hạn như liên tục ghi lại số bước hoặc nhịp tim ở chế độ nền.

Ứng dụng của bạn cần định kỳ ghi dữ liệu vào Health Connect theo những cách sau:

  • Trong mỗi lần đồng bộ hoá, chỉ ghi dữ liệu mới và cập nhật dữ liệu được sửa đổi kể từ lần đồng bộ hoá gần nhất.
  • Phân đoạn các yêu cầu lên tối đa 1.000 bản ghi cho mỗi yêu cầu ghi.
  • Sử dụng WorkManager để lên lịch các tác vụ ở chế độ nền theo định kỳ, với khoảng thời gian ít nhất là 15 phút.
  • Hạn chế để các tác vụ chỉ chạy khi thiết bị ở trạng thái rảnh và không bị yếu pin.

    val constraints = Constraints.Builder()
        .requiresBatteryNotLow()
        .requiresDeviceIdle(true)
        .build()
    
    val writeDataWork = PeriodicWorkRequestBuilder<WriteDataToHealthConnectWorker>(
            15,
            TimeUnit.MINUTES,
            5,
            TimeUnit.MINUTES
        )
        .setConstraints(constraints)
        .build()
    

Theo dõi chủ động

Hình thức này bao gồm những ứng dụng tiến hành hoạt động theo dõi dựa trên sự kiện (như tập thể dục và ngủ) hoặc dữ liệu do người dùng nhập thủ công (chẳng hạn như dinh dưỡng). Những bản ghi này được tạo khi ứng dụng chạy ở nền trước hoặc trong các sự kiện hiếm gặp khi ứng dụng được dùng vài lần trong một ngày.

Đảm bảo rằng ứng dụng của bạn không sử dụng Health Connect trong toàn bộ thời gian diễn ra sự kiện.

Dữ liệu phải được ghi vào Health Connect theo một trong 2 cách:

  • Đồng bộ hoá dữ liệu với Health Connect sau khi sự kiện hoàn thành. Ví dụ: đồng bộ hoá dữ liệu khi người dùng kết thúc một phiên tập thể dục được theo dõi.
  • Lên lịch cho tác vụ một lần bằng WorkManager để đồng bộ hoá dữ liệu vào lúc khác.

Tốc độ lấy mẫu

Khi ghi dữ liệu vào Health Connect, hãy dùng tốc độ lấy mẫu phù hợp nhằm giảm tải cho bộ nhớ. Ví dụ: bạn nên cân nhắc về tần suất cần ghi lại dữ liệu số bước hoặc cân nhắc xem cần có loại dữ liệu nào liên quan đến tốc độ lấy mẫu được liên kết với một bài tập thể dục đang diễn ra (chẳng hạn như tốc độ).

Không phải mọi loại dữ liệu đều yêu cầu cùng một tốc độ lấy mẫu. Việc cập nhật dữ liệu số bước mỗi giây mang lại rất ít lợi ích, thay vào đó hãy dùng tần suất thấp hơn, chẳng hạn như 60 giây/lần. Tuy nhiên, tốc độ lấy mẫu càng cao thì người dùng càng có cái nhìn chi tiết hơn về dữ liệu sức khoẻ và hoạt động thể dục của họ. Tần suất lấy mẫu cần cân bằng giữa mức độ chi tiết và hiệu suất.

Đồng bộ hoá dữ liệu

Các yếu tố sau ảnh hưởng đến quá trình đồng bộ hoá.

Thời hạn của mã thông báo

Vì một mã thông báo Thay đổi không sử dụng sẽ hết hạn trong vòng 30 ngày, nên bạn phải sử dụng chiến lược đồng bộ hoá để tránh mất thông tin trong trường hợp như vậy. Chiến lược của bạn có thể bao gồm các phương pháp sau:

  • Vào kho dữ liệu của ứng dụng để tìm bản ghi được sử dụng gần đây nhất cũng có id giống của Health Connect.
  • Yêu cầu các bản ghi của Health Connect bắt đầu bằng một dấu thời gian cụ thể, sau đó chèn hoặc cập nhật các bản ghi đó trong kho dữ liệu của ứng dụng.
  • Yêu cầu một mã thông báo Thay đổi để dự trữ cho lần tiếp theo cần đến.

Chiến lược quản lý Thay đổi được đề xuất

Trong trường hợp ứng dụng của bạn nhận được mã thông báo Thay đổi không hợp lệ hoặc đã hết hạn, bạn nên sử dụng các chiến lược quản lý sau đây, tuỳ thuộc vào ứng dụng của nó trong logic:

  • Đọc và loại bỏ trùng lặp tất cả dữ liệu. Đây là chiến lược lý tưởng nhất.
    • Lưu trữ dấu thời gian của lần gần nhất ứng dụng đọc dữ liệu từ Health Connect.
    • Khi mã thông báo hết hạn, hãy đọc lại tất cả dữ liệu từ dấu thời gian gần đây nhất hoặc trong 30 ngày qua. Sau đó, loại bỏ trùng lặp đối với dữ liệu đã đọc trước đây bằng cách sử dụng giá trị nhận dạng.
    • Tốt nhất là bạn nên triển khai Mã ứng dụng khách vì đây là những mã bắt buộc để cập nhật dữ liệu.
  • Chỉ đọc dữ liệu từ dấu thời gian của lần đọc gần nhất. Chiến lược này dẫn đến một số khác biệt về dữ liệu trong khoảng thời gian mã thông báo Thay đổi hết hạn. Tuy nhiên, khoảng thời gian ngắn hơn có thể mất từ vài giờ đến vài ngày.
    • Lưu trữ dấu thời gian của lần gần nhất ứng dụng đọc dữ liệu từ Health Connect.
    • Khi mã thông báo hết hạn, hãy đọc tất cả dữ liệu từ dấu thời gian này trở đi.
  • Xoá rồi đọc dữ liệu trong 30 ngày qua. Chiến lược này điều chỉnh cho phù hợp hơn với những gì diễn ra ở lần tích hợp đầu tiên.
    • Xoá tất cả dữ liệu mà ứng dụng đã đọc từ Health Connect trong 30 ngày qua.
    • Sau khi xoá, hãy đọc lại tất cả dữ liệu này.
  • Đọc dữ liệu trong 30 ngày qua mà không loại bỏ trùng lặp. Đây là chiến lược ít lý tưởng nhất vì sẽ khiến người dùng nhìn thấy dữ liệu trùng lặp.
    • Xoá tất cả dữ liệu mà ứng dụng đã đọc từ Health Connect trong 30 ngày qua.
    • Cho phép các mục nhập trùng lặp.

Mã thông báo thay đổi về loại dữ liệu

Nếu ứng dụng của bạn sử dụng độc lập nhiều loại dữ liệu, hãy dùng các Mã thông báo thay đổi riêng biệt cho từng loại dữ liệu. Chỉ sử dụng danh sách nhiều loại dữ liệu cùng với Changes Sync API (API Đồng bộ hoá thay đổi) nếu các loại dữ liệu này được hoặc không được sử dụng cùng nhau.

Đọc trên nền trước

Các ứng dụng chỉ có thể đọc dữ liệu của Health Connect khi đang ở nền trước. Khi ứng dụng đồng bộ hoá dữ liệu của Health Connect, quyền truy cập vào Health Connect có thể bị gián đoạn bất cứ lúc nào. Ví dụ: ứng dụng của bạn sẽ phải xử lý tình trạng gián đoạn ở giữa chừng quá trình đồng bộ hoá khi đọc một lượng lớn dữ liệu từ Health Connect, rồi tiếp tục vào lần tiếp theo ứng dụng mở ra.

Xác định thời gian nhập

Vì ứng dụng của bạn không thể nhận thông báo về dữ liệu mới nên hãy kiểm tra dữ liệu mới ở 2 thời điểm:

  • Mỗi khi ứng dụng của bạn hoạt động ở nền trước. Trong trường hợp này, hãy sử dụng các sự kiện trong vòng đời.
  • Định kỳ khi ứng dụng của bạn duy trì hoạt động ở nền trước. Thông báo cho người dùng khi có dữ liệu mới, cho phép họ cập nhật màn hình để phản ánh các thay đổi.

Giới hạn số lượng yêu cầu

Trong một số ít trường hợp, Health Connect sẽ đặt giới hạn số lượng yêu cầu từ ứng dụng của bạn. Việc này được thực hiện để giới hạn mức độ ảnh hưởng đến pin và hiệu suất của thiết bị.

  • Bạn nên làm theo các nguyên tắc sau về phương pháp hay nhất để tránh tình trạng yêu cầu của ứng dụng bị từ chối do giới hạn số lượng yêu cầu.
  • Ứng dụng phải có khả năng thích ứng với giới hạn số lượng yêu cầu. Ví dụ: Dữ liệu ở chế độ nền có thể được ghi trong tác vụ định kỳ tiếp theo, trong trường hợp yêu cầu không thành công do giới hạn số lượng yêu cầu.

Làm quen với ứng dụng

Nhiều ứng dụng có quy trình làm quen với ứng dụng tuỳ chỉnh, chẳng hạn như hướng dẫn về tính năng hoặc yêu cầu sự đồng ý của người dùng. Nhà phát triển nên xuất hoạt động làm quen với ứng dụng mà Health Connect khởi chạy khi người dùng tương tác với ứng dụng đó lần đầu tiên. Để thực hiện việc này, hãy thêm nội dung sau vào tệp kê khai:

<!-- Required to support pre-Android 14 devices with APK Health Connect -->
<activity
  android:name=".OnboardingActivity"
  android:exported="true"
  android:permission="com.google.android.apps.healthdata.permission.START_ONBOARDING"
  <intent-filter>
    <action android:name="androidx.health.ACTION_SHOW_ONBOARDING"/>
  </intent-filter>
</activity>
<!-- Required to support Android 14+ devices with platform Health Connect -->
<activity-alias
  android:name="UAndAboveOnboardingActivity"
  android:exported="true"
  android:targetActivity=".OnboardingActivity"
  android:permission="android.permission.health.START_ONBOARDING">
  <intent-filter>
    <action android:name="android.health.connect.action.ACTION_SHOW_ONBOARDING" />
  </intent-filter>
</activity-alias>

Xin lưu ý rằng tính năng này chưa được hỗ trợ trên Android 14 nhưng sẽ sớm ra mắt.

Khi một người dùng cố gắng kết nối ứng dụng của bạn với Health Connect, hoạt động đã xuất sẽ được khởi chạy. Hoạt động này phải thực hiện những việc sau:

  • Hiện mọi hướng dẫn có liên quan cho người dùng, chẳng hạn như giải thích loại dữ liệu được ghi hoặc được đọc.
  • Yêu cầu người dùng đồng ý nếu cần.
  • Gửi yêu cầu quyền đến Health Connect.
  • Thực hiện mọi logic khác dành riêng cho ứng dụng, chẳng hạn như lên lịch cho một trình thực thi định kỳ.
  • Sau khi hoàn tất, hãy cho phép người dùng đóng hoạt động đó.

Đối với các ứng dụng không xuất hoạt động làm quen với ứng dụng, Health Connect sẽ đưa người dùng đến màn hình Quản lý quyền sau khi người dùng cố gắng kết nối ứng dụng đó. Điều này có thể chấp nhận được đối với các ứng dụng mà quyền được cấp là điều kiện tiên quyết duy nhất để quá trình tích hợp diễn ra.

Lưu ý rằng người dùng có thể khởi chạy hoạt động làm quen với ứng dụng nhiều lần, chẳng hạn như nếu sau đó người dùng thu hồi các quyền đối với ứng dụng rồi kết nối lại.