SORU
9 Mayıs 2011, PAZARTESİ


Android AlarmManager - RTC_WAKEUP vs ELAPSED_REALTİME_WAKEUP

Biri bana AlarmManager.RTC_WAKEUP AlarmManager.ELAPSED_REALTIME_WAKEUP arasındaki farkı açıklayabilir mi? Belgeleri okudum ama hala gerçekten birini kullanarak ima anlamıyorum.

Örnek kod:

    alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
                     scheduledAlarmTime, 
                     pendingIntent);

    alarmManager.set(AlarmManager.RTC_WAKEUP, 
                     scheduledAlarmTime, 
                     pendingIntent);

Ne kadar farklı iki kod satırlarını çalıştırır? Zaman kodu bu iki hat birbirine göre yürütülür?

Yardımlarınız için minnettarım.

CEVAP
14 Mart 2013, PERŞEMBE


Şu anda kabul edilen ve oy cevap rağmen, AlarmManager.ELAPSED_REALTİME* türleri ile birlikte SystemClock.() elapsedRealtime her zaman alarm ve zamanlama HATASI saatleri daha güvenilir olmuştur.

AlarmManager ile ELAPSED_REALTİME_WAKEUP kullanarak monoton bir saat önyükleme zamandan başlayarak durulacaktır "ve CPU güç tasarruf modu bile kene devam ediyor, bu yüzden Genel amaçlı olarak tavsiye aralığı zamanlama". Yani

alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()
                   60*1000, pendingIntent);

senin Pendingİntent 1 dk (60*1000 milisaniye) yangın yapacaktır.

Oysa, AlarmManager.Bu standart için RTC_WAKEUP "duvar" mutlak zaman başlangıcından beri geçen milisaniye cinsinden süre. Yani

alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
                   60*10000, pendingIntent);

ayrıca alarm 60 saniye sonra, ama güvenilir değil tetikler, çünkü SystemClock documentation not:

Duvar saati kullanıcı veya telefonu şebekesi tarafından ayarlanabilir (bkz zamanı geriye ya da atlayabilir yani setCurrentTimeMillis(uzun)), ileriye olacağı belli olmaz. Bu saat sadece zaman kullanılmalıdır gerçek dünya tarihleri ve saatleri ile yazışma önemli gibi. takvim veya alarm saati uygulaması. Zaman aralığı ya da süre Ölçümler farklı bir saat kullanmanız gerekir. Eğer kullanıyorsanız Sistem.() currentTimeMillis, dinlemeyi düşünün ACTİON_TİME_TİCK, ACTİON_TİME_CHANGED ve ACTİON_TİMEZONE_CHANGED Niyet değiştiği saati öğrenmek için yayınlar.

Ayrıca, soru sadece *_WAKEUP sadece alarm başvurulan ama aynı zamanda non-uyandırma uyandırma vs alarmları sağlamak ne anladığınızdan emin olmak için AlarmManager belgelerine bakın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jabari Johnson

    Jabari Johns

    18 Ocak 2008
  • Lamarr Wilson

    Lamarr Wilso

    27 Aralık 2008
  • TheDamnWreckless

    TheDamnWreck

    12 Temmuz 2010