Aşırı sayıda wakeup
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
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.
Sizin için önerilenler
ziyaret edin.
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-07-27 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2025-07-27 UTC."],[],[],null,["# Excessive wakeups\n\nWakeups are a mechanism in the\n[`AlarmManager`](/reference/android/app/AlarmManager) API that\nlets developers set an alarm to wake up a device at a specified time. Your app\nsets a wakeup alarm by calling one of the `set()` methods in\n[`AlarmManager`](/reference/android/app/AlarmManager) with\neither the\n[`RTC_WAKEUP`](/reference/android/app/AlarmManager#RTC_WAKEUP)\nor\n[`ELAPSED_REALTIME_WAKEUP`](/reference/android/app/AlarmManager#ELAPSED_REALTIME_WAKEUP)\nflag. When a wakeup alarm is triggered, the device comes out of low-power mode\nand holds a [partial wake lock](/topic/performance/vitals/wakelock) while executing the alarm's\n[`onReceive()`](/reference/android/content/BroadcastReceiver#onReceive(android.content.Context,%20android.content.Intent))\nor\n[`onAlarm()`](/reference/android/app/AlarmManager.OnAlarmListener#onAlarm())\nmethod. If wakeup alarms are triggered excessively, they can drain a device's\nbattery.\n\nTo help you improve app quality, Android automatically monitors apps for\nexcessive wakeup alarms and displays the information in Android vitals. For\ninformation on how the data is collected, see [Play Console\ndocs](https://support.google.com/googleplay/android-developer/answer/7385505).\n\nIf your app is waking up the device excessively, you can use the guidance in\nthis page to diagnose and fix the problem.\n\nFix the problem\n---------------\n\nThe [`AlarmManager`](/reference/android/app/AlarmManager) was\nintroduced in early versions of the Android platform, but over time, many use\ncases that previously required\n[`AlarmManager`](/reference/android/app/AlarmManager) are now\nbetter served by newer features like\n[WorkManager](/topic/libraries/architecture/workmanager).\nThis section contains tips for reducing wake up alarms, but in the long term,\nconsider migrating your app to follow the recommendations in the [best\npractices](#best_practices) section.\n\nIdentify the places in your app where you schedule wakeup alarms and reduce\nthe frequency that those alarms are triggered. Here are some tips:\n\n- Look for calls to the various\n [`set()`](/reference/android/app/AlarmManager#set(int,%20long,%20java.lang.String,%20android.app.AlarmManager.OnAlarmListener,%20android.os.Handler))\n methods in\n [`AlarmManager`](/reference/android/app/AlarmManager) that\n include either the\n [`RTC_WAKEUP`](/reference/android/app/AlarmManager#RTC_WAKEUP)\n or\n [`ELAPSED_REALTIME_WAKEUP`](/reference/android/app/AlarmManager#ELAPSED_REALTIME_WAKEUP)\n flag.\n\n- We recommend including your package, class, or method name in your alarm's tag\n name so that you can easily identify the location in your source where the\n alarm was set. Here are some additional tips:\n\n - Leave out any personally identifying information (PII) in the name, such as an email address. Otherwise, the device logs `_UNKNOWN` instead of the alarm name.\n - Don't get the class or method name programmatically, for example by calling [`getName()`](/reference/java/lang/Class#getName()), because it could get obfuscated by Proguard. Instead use a hard-coded string.\n - Don't add a counter or unique identifiers to alarm tags. The system will not be able to aggregate alarms that are set that way because they all have unique identifiers.\n\nAfter fixing the problem, verify that your wakeup alarms are working as\nexpected by running the following [ADB](/studio/command-line/adb)\ncommand: \n\n adb shell dumpsys alarm\n\nThis command provides information about the status of the alarm system service\non the device. For more information, see\n[dumpsys](https://source.android.com/devices/tech/debug/dumpsys).\n\nBest practices\n--------------\n\nUse wakeup alarms only if your app needs to perform a user facing operation\n(such as posting a notification or alerting the user). For a list of\nAlarmManager best practices, see [Scheduling\nAlarms](/training/scheduling/alarms).\n\nDon't use\n[`AlarmManager`](/reference/android/app/AlarmManager) to\nschedule background tasks, especially repeating or network background tasks. Use\n[WorkManager](/topic/libraries/architecture/workmanager)\nto schedule background tasks because it offers the following benefits:\n\n- batching - jobs are combined so that battery consumption is reduced\n- persistence - if the device is rebooted, scheduled WorkManager jobs run after the reboot finishes\n- criteria - jobs can run based on conditions, such as whether or not the device is charging or WiFi is available\n\nFor more information, see [Guide to background processing](/guide/background).\n\nDon't use [`AlarmManager`](/reference/android/app/AlarmManager)\nto schedule timing operations that are valid only while the app is running (in\nother words, the timing operation should be canceled when the user exits the\napp). In those situations, use the\n[`Handler`](/reference/android/os/Handler) class because it is\neasier to use and much more efficient.\n\nRecommended for you\n-------------------\n\n- Note: link text is displayed when JavaScript is off\n- [Stuck partial wake locks](/topic/performance/vitals/wakelock)\n- [ANRs](/topic/performance/vitals/anr)"]]