Zamanlama görev yinelenen Android
Özel bir sunucu uygulaması ön planda olduğu sürece varlığını gönderme yinelenen bir görev olan bir uygulama tasarlıyorum.
web üzerinde aramalarım içinde birkaç farklı yaklaşımlar gördüm ve bunu yapmanın en iyi yolu ne olduğunu bilmek istedim.
Server arama programı için en iyi yolu nedir?
seçenekleri gördüm:
Timer .
AlarmManager ile BroadcastReciever.
ne düşünüyorsun?
DÜZENLEME:
bu her zaman ne yaptığımı sunucu göndermem gerekiyor, ince bir sohbet odasında diğer kişilerle açık kez, ne yaptığımı bilmeleri gerektiği anlamına gelir.
whatsapp mesaj geri bildirim mekanizmasına benzer:
CEVAP
Benim bilgim başı olarak görüşlerimi paylaşıyorum ama emin değilim. Ben her zaman eğer yanılıyorsam en iyi cevap kabul et .
Alarm Yöneticisi
Alarm Yöneticisi CPU bir uyandırma alarmı alıcı onReceive()
yürütme yöntemi olduğu sürece kilit tutar. Bu telefonu yayını taşıma bitirene kadar uyku olmayacağını garanti eder. onReceive()
döndüğünde Alarm Yöneticisi bu wake kilidi serbest bırakır. Bu telefon bazı durumlarda onReceive()
yöntemi tamamlar tamamlamaz uyku anlamına gelir. Eğer alarm alıcı Context.startService()
adlı telefonunuz varsa, istenen hizmet piyasaya sürülmeden önce uyku olasıdır. Bunu önlemek için, BroadcastReceiver
Service
ayrı bir uyarı yapması gerekir sizin hizmet kullanılabilir hale gelinceye kadar telefon çalışmaya devam eder sağlamak için politika kilidi.
Not: Alarm Yöneticisi eğer uygulamanızın çalışır durumda değilse bile uygulama kodunuzu belirli bir zamanda çalıştırmak istediğiniz durumlar için tasarlanmıştır. Normal zamanlama işlemleri (kene, zaman aşımı, vb) için daha kolay ve İşleyicisi kullanmak çok daha etkili olacaktır.
Zamanlayıcı
timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
synchronized public void run() {
\\ here your todo;
}
}}, 60000, 60000);
Timer
ScheduledThreadPoolExecutor
tarafından çözüldüğünü bazı dezavantajları vardır. En iyi seçenek değil
ScheduledThreadPoolExecutor.
java.util.Timer
ScheduledThreadPoolExecutor
(tercih edilen) bir arka plan iş parçacığı üzerinde düzenli aralıklarla ortaya bir eylem planlamak için kullanabilirsiniz.
İşte bir örnek son kullanma:
ScheduledExecutorService scheduler =
Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate
(new Runnable() {
public void run() {
// call service
}
}, 0, 10, TimeUnit.MINUTES);
ScheduledExecutorService
tercih ettim
Ama buradaki programı uygulamanız çalışırken ortaya çıkar, kullanabileceğiniz Da düşün bir diğer yanıtlar önerilen Timer
, ya da daha yeni ScheduledThreadPoolExecutor
.
Eğer uygulama çalışmıyor bile güncelleme alacak, AlarmManager
ile gitmeli.
Alarm Yöneticisi eğer uygulamanızın çalışır durumda değilse bile uygulama kodunuzu belirli bir zamanda çalıştırmak istediğiniz durumlar için tasarlanmıştır.
Eğer uygulama kapalı olduğunda güncelleme planlıyorsanız, bir kez her on dakikada oldukça sık olduğunu unutmayın, ve böylece belki biraz güç tüketen de.
KİMLİK, etiket, boş, ya da com için ba...
Nasıl bir zamanlama olabilir ben C# Wi...
Android Studio build " başarısız; ...
Studio 0.4 dosyaları MUAYENE META-INF/...
Android Studio: Gradle - yapı -- Yürüt...