ScheduledExecutorService
chạy trong quy trình đăng ký của bạn. Nếu quá trình đăng ký bị chết, sẽ không có tác vụ theo lịch nào được chạy. Do đó sự cần thiết cho Service
(vì vậy quá trình của bạn sống vượt ra ngoài hoạt động một phần hoạt động của vòng đời).
Trong khi AlarmManager
là dịch vụ hệ thống quan trọng chạy suốt ngày. Và nếu đơn đăng ký của bạn đã lên lịch biểu và đã bị giết, thì AlarmManager
có thể bắt đầu lại đơn đăng ký (qua số PendingIntent
).
Và sự khác biệt lớn cuối cùng mà không ai đề cập ở đây là AlarmManager
biết về WakeLock
và quản lý nguồn điện. Điều này có nghĩa là AlarmManager
có thể đánh thức thiết bị Android vào thời gian được chỉ định để chạy tác vụ được lên lịch. Trong khi ScheduledExecutorService
không biết gì về quản lý năng lượng và sẽ chỉ bắt đầu nhiệm vụ khi thiết bị không ở chế độ ngủ sâu (tức là nó có thể đơn giản là bỏ lỡ thời gian).
Có điều gì khác sẽ hoạt động khi thiết bị đang ở chế độ ngủ sâu .. Tôi đã thử Handler, Runnable Threads, không có gì hoạt động ở chế độ ngủ sâu. – DAC84