2015-10-02 24 views
6

Tôi đang cố gắng kiểm tra hành vi của ứng dụng Android của chúng tôi khi hệ điều hành ở chế độ Doze. Tôi đang sử dụng trình giả lập chạy API Android 23 (Bản sửa đổi 1). Ứng dụng sẽ khởi chạy Dịch vụ thông qua AlarmManager bằng phương thức setInexactRepeating với loại ELAPSED_REALTIME_WAKEUP. Tôi đặt chuông báo cháy khoảng ba phút một lần (chỉ dành cho mục đích thử nghiệm). Sau một vài lần thử (hướng dẫn chính thức là rất không rõ ràng), tôi đã cài đặt trình giả lập trong trạng thái IDLE bằng cách khóa màn hình của trình mô phỏng và chạy các lệnh được đề xuất của dumpsys. Khi thiết bị là IDLE, tôi vẫn có thể thấy Dịch vụ đang được báo động khởi chạy. Đây không phải là hành vi mong đợi. Tôi đã chờ báo động dừng lại. Đây có phải là lỗi không? Hay tôi đang thiếu một cái gì đó?Android M (xem trước) Chế độ Doze và AlarmManager

+0

Đây là vấn đề liên quan đến trình mô phỏng. Trên một báo động thiết bị thực bị dừng trong IDLE như được ghi lại. –

Trả lời

0

Để biết mã sử dụng thử nghiệm bên dưới.

adb shell dumpsys deviceidle enable adb shell dumpsys battery unplug adb shell dumpsys deviceidle step adb shell dumpsys deviceidle force-idle

Sử dụng setAndAllowWhileIdle cho lực lượng smartphone wakeup.

Trong trường hợp của tôi, tôi sử dụng này:

if (android.os.Build.VERSION.SDK_INT > 22) { am.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender); } else { am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, sender); }

Tôi tin rằng dự kiến ​​là Alarm được dừng lại.

Các vấn đề liên quan