Một phần câu hỏi của tôi, cách tôi có thể thiết lập công việc với khoảng thời gian ít hơn 15 phút trong "Nougat", được trả lời bởi "bão tuyết" trong câu trả lời của mình tại đây:
Job Scheduler not running on Android N
Ông giải thích vấn đề và đề nghị sử dụng workaround sau:công việc lên lịch trong android N với khoảng thời gian ít hơn 15 phút
JobInfo jobInfo;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
jobInfo = new JobInfo.Builder(JOB_ID, serviceName)
.setMinimumLatency(REFRESH_INTERVAL)
.setExtras(bundle).build();
} else {
jobInfo = new JobInfo.Builder(JOB_ID, serviceName)
.setPeriodic(REFRESH_INTERVAL)
.setExtras(bundle).build();
}
Tuy nhiên, bằng cách sử dụng đề nghị
.setMinimumLatency(REFRESH_INTERVAL)
chỉ bắt đầu công việc một lần;
nhưng làm thế nào để làm cho nó định kỳ với khoảng thời gian khoảng 30 giây trên một thiết bị nougat android (không sử dụng trình xử lý hoặc trình quản lý báo thức)?
Thực hiện điều gì đó sau mỗi 30 giây, trừ khi ứng dụng của bạn ở mặt trước và chủ động được người dùng sử dụng, không phù hợp trong mắt người dùng, người đã phàn nàn lớn về mức tiêu thụ pin của ứng dụng nền. – CommonsWare
Tuy nhiên, nếu bạn có người dùng muốn có thông tin mới nhất có sẵn khi họ bắt đầu điện thoại của họ (có thể họ hiện không có internet ...), người dùng cần dịch vụ nền đáng tin cậy. Hay bạn đang cố gắng nói với tôi, rằng điều này chỉ đơn giản là không thể? Sau đó, bạn có thể làm như vậy, mà không cố gắng để dạy cho tôi về những điều tôi biết. – tomseitz
"nếu bạn có người dùng muốn có thông tin mới nhất có sẵn khi họ khởi động điện thoại" - điều đó không yêu cầu thực hiện công việc cứ 30 giây một lần. "Hay bạn đang cố gắng nói với tôi, rằng điều này chỉ đơn giản là không thể?" - không có gì sẽ thực hiện điều này một cách đáng tin cậy, trừ khi ứng dụng của bạn ở mặt trước và đang được sử dụng tích cực. – CommonsWare