Emin değilim ama bilgim gereği görüşlerimi paylaşıyorum. Yanlışsam her zaman en iyi cevabı kabul ediyorum.
Alarm Yöneticisi
Alarm Yöneticisi, alarm alıcısının aktif olduğu sürece bir CPU uyanma kilidi tutar. onReceive()
yöntemi . Bu, siz yayınla ilgilenene kadar telefonun uyumayacağını garanti eder. Geri onReceive()
döndüğünde, Alarm Yöneticisi bu uyandırma kilidini kaldırır. Bu, telefonun bazı durumlarda onReceive()
yönteminiz tamamlanır tamamlanmaz uyuyacağı anlamına gelir . Alarm alıcınız aradıysa Context.startService()
, istenen servis başlatılmadan önce telefonun uykuya dalması mümkündür. Bunu önlemek için, sizin BroadcastReceiver
ve Service
servis kullanılabilir hale gelinceye kadar telefon çalışmaya devam ediyor sağlamak için ayrı bir uyandırma kilit politikasını uygulamak gerekecektir.
Not: Alarm Yöneticisi, uygulamanız o anda çalışmıyor olsa bile, uygulama kodunuzun belirli bir zamanda çalışmasını istediğiniz durumlar için tasarlanmıştır. Normal zamanlama işlemleri için (işaretler, zaman aşımları vb.) İşleyiciyi kullanmak daha kolay ve çok daha etkilidir.
kronometre
timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
synchronized public void run() {
\\ here your todo;
}
}}, TimeUnit.MINUTES.toMillis(1), TimeUnit.MINUTES.toMillis(1));
Timer
tarafından çözülen bazı dezavantajları vardır ScheduledThreadPoolExecutor
. Bu yüzden en iyi seçim değil
ScheduledThreadPoolExecutor .
Kullanabilirsiniz java.util.Timer
ScheduledThreadPoolExecutor
Bir arka plan iş parçacığında düzenli aralıklarla gerçekleşecek bir eylem zamanlamak için veya (tercih edilen) .
İşte ikincisini kullanan bir örnek:
ScheduledExecutorService scheduler =
Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate
(new Runnable() {
public void run() {
// call service
}
}, 0, 10, TimeUnit.MINUTES);
Bu yüzden tercih ettim ScheduledExecutorService
Ancak, güncellemeler uygulamanız çalışırken gerçekleşecekse, Timer
diğer yanıtlarda önerildiği gibi veya daha yenisini kullanabileceğinizi de düşünün ScheduledThreadPoolExecutor
. Uygulamanız çalışmadığında bile güncellenecekse AlarmManager
,.
Alarm Manager, uygulamanız o anda çalışmıyor olsa bile, uygulama kodunuzun belirli bir zamanda çalışmasını istediğiniz durumlar için tasarlanmıştır.
Uygulamanız kapalıyken güncelleme yapmayı planlıyorsanız, her on dakikada bir oldukça sık olduğunu ve bu nedenle muhtemelen biraz fazla güç tükettiğini unutmayın.