Aşırı sayıda wakeup

Uyandırmalar, çocukların Şu özelliklere sahip AlarmManager API: geliştiricilerin bir cihazı belirli bir zamanda uyandırmak için alarm kurmasına olanak tanır. Uygulamanız set() yöntemlerinden birini çağırarak uyandırma alarmı ayarlar: AlarmManager ve ya RTC_WAKEUP veya ELAPSED_REALTIME_WAKEUP tıklayın. Uyandırma alarmı tetiklendiğinde cihaz düşük güç modundan çıkar ve alarm çalışırken kısmi bir uyanık kalma kilidi tutar. onReceive() veya onAlarm() yöntemidir. Uyandırma alarmları çok fazla tetiklenirse cihazın pilini tüketebilirler pil.

Android, uygulama kalitesini iyileştirmenize yardımcı olmak için uygulamaları ve bilgileri Android vitals'da görüntüler. Örneğin, verilerin nasıl toplandığıyla ilgili bilgileri Play Console'da bulabilirsiniz. dokümanlar için tıklayın.

Uygulamanız cihazı çok fazla uyandırıyorsa aşağıdaki adımları izleyin: bu sayfayı inceleyin.

Sorunun çözümü

AlarmManager Android platformunun ilk sürümlerinde kullanıma sunulmuş olsa da zaman içinde daha önce gerekli olan AlarmManager şimdi daha iyi sunulur. WorkManager. Bu bölümde uyandırma alarmlarını azaltmayla ilgili ipuçları yer alır. Ancak uzun vadede önerileri uygulamak için uygulamanızı en iyi uygulamalar bölümünü inceleyin.

Uygulamanızda uyandırma alarmlarını planladığınız yerleri tespit edin ve bu alarmların tetiklenme sıklığını belirtir. Aşağıda bazı ipuçlarını görebilirsiniz:

  • Çeşitli set() yöntem: AlarmManager veya RTC_WAKEUP veya ELAPSED_REALTIME_WAKEUP tıklayın.

  • Paketinizi, sınıfınızı veya yöntem adınızı alarmınızın etiketine eklemenizi öneririz. Böylece, kaynakta bu adın algılandığı konumu kolayca alarm kuruldu. Aşağıda bazı ek ipuçları verilmiştir:

    • Kimlik bilgileri (PII) alan adına yer vermeyin. Örneğin, e-posta adresi. Aksi takdirde cihaz, alarm yerine _UNKNOWN değerini kaydeder dokunun.
    • Sınıf veya yöntem adını programatik olarak (örneğin, şunu çağırarak) almayın: getName(), çünkü ProGuard tarafından karartılabilir. Bunun yerine sabit kodlu bir dize kullanın.
    • Alarm etiketlerine sayaç veya benzersiz tanımlayıcılar eklemeyin. Sistem alarmları toplu hale getirebiliriz çünkü hepsinin benzersiz tanımlayıcılar.

Sorunu düzelttikten sonra uyandırma alarmlarınızın aşağıdaki gibi çalıştığını doğrulayın: aşağıdaki ADB'nin çalıştırılması ile beklenir: komut:

adb shell dumpsys alarm

Bu komut, alarm sistemi hizmetinin durumu hakkında bilgi sağlar cihaz üzerinde. Daha fazla bilgi için bkz. dumpsys'i seçin.

En iyi uygulamalar

Uyandırma alarmlarını yalnızca uygulamanızın kullanıcılara yönelik bir işlem gerçekleştirmesi gerektiğinde kullanın (ör. bildirim yayınlama veya kullanıcıyı uyarma). Şunlar için: AlarmManager en iyi uygulamaları için Programlama Alarmlar.

Kullanma AlarmManager - arka plan görevlerini, özellikle tekrarlanan veya ağ arka plan görevlerini planlamaya yardımcı olur. Tekliflerinizi otomatikleştirmek ve optimize etmek için İş Yöneticisi şu avantajları sunduğundan arka plan görevlerini planlamak için kullanılır:

  • toplu işlem - işler birleştirilir, böylece pil tüketimi azalır
  • kalıcılık - cihaz yeniden başlatılırsa planlanmış WorkManager işleri yeniden başlatma tamamlandıktan sonra çalıştır
  • ölçütlerdir. İşler, cihazın bağlı olup olmadığı gibi koşullara göre çalışabilir. şarj oluyor veya kablosuz bağlantı var

Daha fazla bilgi için Arka planda işleme rehberi başlıklı makaleyi inceleyin.

AlarmManager uzantısını kullanma yalnızca uygulama çalışırken geçerli olan zamanlama işlemlerini planlamak için kullanılır. diğer bir deyişle, kullanıcı uygulamasında). Böyle durumlarda Handler sınıfı ve verimli bir şekilde çalışmasını sağlar.

ziyaret edin.