Good day, tình hình:Pin tối ưu hóa (wakelocks) trên Huawei EMUI 4.0 +
Tôi đang phát triển ứng dụng Android phục vụ như là ứng dụng thể thao theo dõi/navigation - vì vậy nó đòi hỏi kết nối vĩnh viễn cho GPS và cũng thiết bị luôn hoạt vĩnh viễn . Ghi âm được thực hiện mỗi giây.
Giải pháp hiện tại làm việc trong nhiều năm là nhờ wakelocks
giúp thiết bị luôn tỉnh táo.
Chế độ Doze trong Android 6.0+ tình huống phức tạp, nhưng không phải trường hợp này.
Trên thiết bị Huawei có lẽ là loại tối ưu hóa khác.
Dưới đây là một phần của bản ghi:
10-10 10:33:18.462 1014-384 D/PFW.HwPFWAppWakeLockPolicy: getUidWakeLock uid: 10097 wakelock >= 10 mins 10-10 10:33:18.543 1014-384 D/PFW.HwPFWAppWakeLockPolicy: force stop abnormal wakelock app uid: 10097 10-10 10:33:18.558 1014-384 I/ActivityManager: Force stopping menion.android.locus appid=10097 user=0: from pid 1014
Vì vậy, sau khoảng. Trên 30 phút, hệ thống chỉ đơn giản quyết định rằng ứng dụng sử dụng quá nhiều wakelocks
và chấm dứt hoàn toàn với tất cả các dịch vụ, lịch sử, chỉ đơn giản là kill
.
Bất kỳ trải nghiệm nào với hành vi này và bất kỳ đề xuất nào, cách thực hiện thao tác đơn giản này (ghi vĩnh viễn vị trí GPS khi màn hình tắt) tốt hơn?
Như tôi đã viết lúc bắt đầu, trên tất cả các thiết bị khác ngoại trừ Huawei mới, hệ thống như vậy hoạt động chính xác trong nhiều năm.
EDIT: lưu ý sau khi nhận xét của một người dùng (đã xóa?), Ứng dụng "danh sách trắng" trong trình quản lý pin Huawei (đánh dấu là "ứng dụng được bảo vệ") không ảnh hưởng đến vấn đề này.