Doze Mode: lényeg, fázisok és az energiatakarékosság mechanizmusa

Szerző: IT Sectr Megjelenés: 2026-03-28 Olvasási idő: 10 perc

A Doze Mode egy Android energiatakarékos mód, amelyet a 6.0 Marshmallow verzióban vezettek be, és jelentősen korlátozza az alkalmazások háttértevékenységét, amikor a készülék inaktív. A rendszer alacsony energiafogyasztású állapotba helyezi az alkalmazásokat, elhalasztva a hálózati kéréseket, szinkronizálást és JobSchedulert az akkumulátor élettartamának meghosszabbítása érdekében. A Android Developers, 2025 elemzése szerint a Doze Mode akár 2–3-szor is megnövelheti a készülék készenléti idejét a modelltől és az OS verziójától függően.

Főbb pontok

  • Doze Mode — Android 6+ alvó mód, amely inaktivitáskor korlátozza a háttértevékenységet
  • Két fázis — Light Doze (könnyű alvás) és Deep Doze (mély alvás) eltérő korlátozásokkal
  • Szolgáltatási ablakok — rövid időszakok, amikor az alkalmazások feladatokat hajthatnak végre Deep Doze-ban
  • Whitelist — kivételek azon alkalmazások számára, amelyek háttérmunkát végezhetnek Doze-ban
  • GCM/FCM — a magas prioritású push értesítések felébresztik a készüléket Doze-ból

Mi az a Doze Mode

A Doze Mode egy beépített energiatakarékos mechanizmus Androidban, amely akkor aktiválódik, amikor a készülék nincs töltőhöz csatlakoztatva, a képernyő ki van kapcsolva és a felhasználó egy bizonyos ideig nem lép kapcsolatba a készülékkel. A Doze célja, hogy minimalizálja az alkalmazások háttértevékenységét, hogy maximalizálja az akkumulátor élettartamát készenléti módban. A rendszer elhalasztja a JobSchedulert, a fiókok szinkronizálását, az AlarmManagert és a hálózati kéréseket.

A módot Android 6.0 Marshmallow (API 23) ban vezették be, és jelentősen továbbfejlesztették a későbbi verziókban. Az Android 7.0 Nougat-ban megjelent a második fázis (Light Doze), amely a készülék mozgásakor aktiválódik. Az Android 8.0 további korlátozásokat vezetett be a Doze-zsal együtt működő háttérszolgáltatásokra. Az Android 12+-ban a Doze integrálásra került a frissített akkumulátorkezelő rendszerrel, amely elemzi a felhasználó viselkedését.

Fontos megérteni: a Doze Mode nem kapcsolja ki teljesen az alkalmazásokat. Elhalasztott feladatokkal rendelkező állapotba helyezi őket, de nem öli meg a folyamatokat. A Foreground Service értesítéssel tovább működik, a magas prioritású push értesítések (FCM high-priority) kézbesítésre kerülnek, és az ébresztések menetrend szerint aktiválódnak. A Doze csak azokat a háttérműveleteket érinti, amelyeket a felhasználó jelenleg nem lát és nem vár.

Az aktiválás feltételei

A Doze Mode akkor aktiválódik, ha minden feltétel teljesül: a képernyő több mint 30 perce ki van kapcsolva (első aktiválás), a készülék mozdulatlan (gyorsulásmérőt használ), nincs töltőhöz csatlakoztatva. Ha a felhasználó kézbe veszi a telefont vagy csatlakoztatja a töltőt, a Doze azonnal deaktiválódik. Android 7+-ban a Light Doze már 5 perc inaktivitás után aktiválódik, még a készülék mozgása esetén is.

Hogyan működik a Doze Mode

A Doze Mode a DeviceIdleController rendszerszolgáltatáson keresztül kezeli a háttértevékenységet, amely elemzi az érzékelők, a képernyő és a töltő állapotát. Amikor minden aktiválási feltétel teljesül, a rendszer várakozó állapotba helyezi az alkalmazásokat, és kéréseiket szolgáltatási ablakokba csoportosítja. Ezekben az ablakokban az összes elhalasztott feladat — hálózati hívások, szinkronizálás, AlarmManager — kötegesen kerül végrehajtásra.

A rendszer PowerManager je szabályozza, hogy mely alkalmazások léphetnek ki a Doze-ból. A magas prioritású push értesítések (FCM high-priority) felébreszthetik a készüléket az üzenet kézbesítéséhez. A rendszer figyelmen kívül hagyja a Doze-t a felhasználó által az akkumulátor-optimalizálás Whitelist jéhez adott alkalmazások esetében. Az összes többi alkalmazásnak meg kell várnia a következő szolgáltatási ablakot.

A szolgáltatási ablakok időtartama Deep Doze-ban exponenciálisan növekszik: az első ablak 1 óra után, a második 2 óra után, a harmadik 4 óra után és így tovább, egészen a 12 órás maximális intervallumig. Ez azt jelenti, hogy minél tovább marad a készülék Doze-ban, annál ritkábban hajthatnak végre az alkalmazások háttérfeladatokat — az akkumulátor maximálisan agresszívan kímélődik.

Hatás a hálózati kérésekre

Doze Mode-ban az összes hálózati kérés felfüggesztésre kerül a szolgáltatási ablak megérkezéséig. Kivételt csak a FCM high-priority üzenetek (a payload-ban „high_priority” címkével) és az AlarmManager setAndAllowWhileIdle() vagy setExactAndAllowWhileIdle() jelzőkkel rendelkező jelei képeznek. A szokásos hálózati hívások Retrofit, OkHttp vagy Volley segítségével nem kerülnek végrehajtásra az ablak megnyílásáig.

A Doze Mode fázisai

A Doze Mode két fázisból áll: Light Doze (könnyű alvás) és Deep Doze (mély alvás). Minden fázis saját korlátozásokat alkalmaz, és eltérő aktiválási küszöbértékekkel rendelkezik. A fázisok közötti különbség megértése alapvető fontosságú az energiatakarékos módnak ellenálló háttérfeladatokat tervező fejlesztő számára.

Light Doze (könnyű alvás)

A Light Doze a készülék 5–30 perces inaktivitása után aktiválódik (képernyő kikapcsolva, nincs mozgás). Ebben a fázisban a hálózati kérések és a szinkronizálás felfüggesztésre kerül, de az AlarmManager és a JobScheduler kisebb késésekkel tovább működik. Az alkalmazások kiléphetnek a Light Doze-ból push értesítés fogadásakor vagy a töltő csatlakoztatásakor. A Light Doze nem igényel teljes mozdulatlanságot — a készülék mozoghat.

Deep Doze (mély alvás)

A Deep Doze 60–90 perc inaktivitás után következik be mozdulatlan készülék mellett (a gyorsulásmérő nem érzékel mozgást). Deep Doze-ban a rendszer sokkal agresszívebben halasztja el a feladatokat: a szolgáltatási ablakok ritkábban nyílnak meg (exponenciálisan növekvő intervallummal), az AlarmManager csak a setAndAllowWhileIdle() jelzőkkel aktiválódik, és a WakeLock nem működik normál módban. A Whitelist-en kívüli alkalmazások gyakorlatilag teljesen elveszítik a háttértevékenységet.

ParaméterLight DozeDeep Doze
Aktiválási idő5–30 perc60–90 perc
Mozgás követelményNem szükségesMozdulatlanság
Ablak intervallum10–60 perc1–12 óra
AlarmManagerKésésekkel működikCsak withAllowWhileIdle
Hálózat az ablakokbanElérhetőElérhető

Korlátozások Doze Mode-ban

A Doze Mode több kategóriájú korlátozást alkalmaz, amelyeket a fejlesztőnek figyelembe kell vennie az alkalmazás tervezésekor. E korlátozások figyelmen kívül hagyása ahhoz vezet, hogy a háttérfeladatok nem hajtódnak végre, és a felhasználó az alkalmazás helytelen működését tapasztalja — frissítések hiánya, el nem küldött üzenetek, el nem végzett szinkronizálás.

Hálózati korlátozások

Minden hálózati kérés blokkolva van a szolgáltatási ablak megérkezéséig. Ez vonatkozik a HTTP-hívásokra, WebSocket-kapcsolatokra, fájlletöltésekre. Kivételt képeznek az FCM high-priority üzenetek, amelyek egy külön Google Play Services csatornán haladnak át, függetlenül a Doze-tól. Kritikus adatok szinkronizálásához a WorkManager használata javasolt NetworkType.CONNECTED politikával.

AlarmManager korlátozások

Az AlarmManager Deep Doze-ban az összes ébresztést elhalasztja, kivéve a setAndAllowWhileIdle() és setExactAndAllowWhileIdle() metódusokkal létrehozottakat. Azonban még ezeknek a metódusoknak is van korlátozása — legfeljebb 1 aktiválás 9 percenként alkalmazásonként. A pontos ébresztések setExact() Deep Doze-ban nem garantálják az aktiválást a megadott időben.

WakeLock korlátozások

A WakeLock Doze Mode-ban nem szabványos módon működik: a rendszer nem tartja fenn az alvási zárolást a Whitelisten kívüli alkalmazások számára. Még ha az alkalmazás helyesen is szerezte meg a PARTIAL_WAKE_LOCK-ot, a Deep Doze bekövetkeztekor a rendszer erőszakosan felszabadíthatja azt. Az egyetlen mód a feladat végrehajtásának garantálására Doze-ban a Foreground Service használata értesítéssel.

  • Hálózat — minden kérés elhalasztva a szolgáltatási ablakig, kivéve FCM high-priority
  • AlarmManager — pontos ébresztések elhalasztva; setAndAllowWhileIdle — max 1/9 perc
  • WakeLock — erőszakosan felszabadítva a Whitelisten kívüli alkalmazások számára
  • JobScheduler — feladatok csoportosítva szolgáltatási ablakokba exponenciális intervallummal
  • Szinkronizálás — Account SyncManager felfüggesztve a Doze-ból való kilépésig

Whitelist és kivételek

A Whitelist (fehér lista) Doze azon alkalmazások halmaza, amelyeknek a rendszer engedélyezi a háttértevékenységet energiatakarékos módban minimális korlátozásokkal. A felhasználó manuálisan adhat hozzá alkalmazásokat a Beállítások → Akkumulátor → Akkumulátor-optimalizálás menüpontban. A rendszeralkalmazások, indítók és a Google Play Services alapértelmezés szerint a Whitelisten vannak.

A fejlesztő kérheti a Whitelisthez való hozzáadást egy rendszerpárbeszédablakon keresztül az ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS Intent segítségével. Ehhez a manifesztumban szükség van a REQUEST_IGNORE_BATTERY_OPTIMIZATIONS engedélyre. A Google azonban nem javasolja kivétel kérését alapos ok nélkül — az ezt a lehetőséget visszaélő alkalmazások kockáztatják, hogy elutasítják őket a Google Play ben való közzétételkor.

Whitelist nélkül az alkalmazás használhatja a FCM high-priority t a készülék Doze-ból való felébresztésére. Minden ilyen üzenet rövid ablakot (10–30 másodperc) ad az alkalmazásnak a feladat végrehajtására. Hosszabb műveletekhez az alkalmazásnak el kell indítania egy Foreground Service-t, amely tovább működik a Doze szolgáltatási ablakaiban. A Google biztosít mentességi mechanizmust bizonyos alkalmazástípusok számára is: navigációs, orvosi, üzenetküldő alkalmazások.

A Whitelist állapotának ellenőrzése

Annak ellenőrzéséhez, hogy az alkalmazás az akkumulátor-optimalizálás Whitelist jén van-e, a powerManager.isIgnoringBatteryOptimizations() metódust használjuk. Ha a metódus false értéket ad vissza, az alkalmazás a Doze összes korlátozása alá esik. Ha true — az alkalmazás korlátozások nélkül használhatja a Wakelockot, AlarmManagert és hálózatot még Deep Doze-ban is. Ennek a kiváltságnak a visszaélése azonban rossz felhasználói értékelésekhez vezet.

Doze Mode tesztelése

A tesztelés az alkalmazás Doze Mode-ban való viselkedésének ellenőrzése kötelező fejlesztési szakasz, mivel a Doze megzavarhatja a háttérfunkciókat. Az Android parancssori eszközöket biztosít ADB-n keresztül a készülék kényszerített átkapcsolásához Light Doze-ba és Deep Doze-ba. A tesztelést fizikai eszközön vagy Android 6.0+ emulátoron kell végezni.

A Light Doze ba való belépéshez az adb shell dumpsys deviceidle step light parancsot használjuk. Deep Doze-hoz — adb shell dumpsys deviceidle step deep. Az adb shell dumpsys deviceidle force-idle deep parancs azonnal átkapcsolja a készüléket Deep Doze-ba anélkül, hogy megvárná a szokásos időtúllépést. Tesztelés után a Doze az adb shell dumpsys deviceidle unforce paranccsal kapcsolható ki.

bash
# Kényszerített belépés Light Doze-ba
$ adb shell dumpsys deviceidle step light

# Kényszerített belépés Deep Doze-ba
$ adb shell dumpsys deviceidle step deep

# Azonnali átmenet Deep Doze-ba
$ adb shell dumpsys deviceidle force-idle deep

# Kilépés Doze-ból
$ adb shell dumpsys deviceidle unforce

# Doze állapotának megtekintése
$ adb shell dumpsys deviceidle

Az alkalmazás működésének ellenőrzése

A Doze Mode-ba való átkapcsolás után ellenőrizni kell: működnek-e a hálózati kérések (el kell lennie halasztva), aktiválódik-e az AlarmManager, kézbesítésre kerülnek-e az FCM-üzenetek, helyesen hajtódnak-e végre a WorkManager feladatok. A WorkManager Doze-ban tovább működik: feladatai a szolgáltatási ablakokban hajtódnak végre. Ha azonban a feladat azonnali végrehajtást igényel, meg kell adni a setExpedited() t vagy Foreground Service-t kell használni.

Legjobb gyakorlatok Doze Mode-hoz

A Doze Mode nak ellenálló alkalmazás fejlesztése megköveteli a háttérfeladatokhoz való hozzáállás újragondolását. A Google azt javasolja, hogy az alkalmazást úgy tervezzük, hogy a Doze bármilyen korlátozása mellett helyesen működjön, anélkül, hogy a háttérműveletek azonnali végrehajtására támaszkodna. Az alapelv — a WorkManager használata minden olyan háttérfeladathoz, amely elhalasztható.

Használja a WorkManagert

A WorkManager a Google által ajánlott API háttérfeladatokhoz, mivel automatikusan alkalmazkodik a Doze-hoz. A WorkManager a JobSchedulert (API 23+) vagy régebbi verziókon az AlarmManager + BroadcastReceivert használja. A WorkManager feladatok a legközelebbi Doze szolgáltatási ablakban hajtódnak végre, szükség esetén pedig azonnal a Expedited Work (Foreground Service a motorháztető alatt) segítségével.

Foreground Service kritikus feladatokhoz

Ha a feladat nem halasztható el (média lejátszása, navigáció, VoIP), használjon Foreground Service t kötelező értesítéssel. A Foreground Service mentességet kap a Doze alól: megtarthatja a WakeLockot és végrehajthat hálózati kéréseket. Azonban még a Foreground Service is alá van vetve a Deep Doze szolgáltatási ablakok politikájának bizonyos feladattípusok esetében — például dataSync.

FCM high-priority értesítésekhez

Azonnali figyelmet igénylő üzenetek kézbesítéséhez (bejövő hívás, sürgős értesítés) használjon FCM high-priority üzeneteket. Az ilyen üzenetek felébresztik a készüléket Doze-ból, és rövid ablakot adnak az alkalmazásnak a feldolgozásra. Ne használja a high-priority t szokásos értesítésekhez — ez az akkumulátor gyors lemerüléséhez vezet, és a Google Play a szabályzat megsértésének tekintheti.

  • WorkManager — előnyben részesített API minden elhalasztható háttérfeladathoz
  • Foreground Service — kritikus feladatokhoz látható értesítéssel
  • FCM high-priority — sürgős üzenetek kézbesítéséhez a készülék felébresztésével
  • Ne kérjen Whitelistet végső szükség nélkül — rontja a felhasználói élményt
  • Tesztelje az alkalmazást Light és Deep Doze-ban ADB-n keresztül a kiadás előtt

Gyakran Ismételt Kérdések

Mi az a Doze Mode Androidban?

A Doze Mode egy Android 6+ energiatakarékos mód, amely korlátozza az alkalmazások háttértevékenységét, amikor a készülék nincs használatban (képernyő ki, nincs mozgás). A rendszer elhalasztja a hálózati kéréseket, szinkronizálást és JobSchedulert, csoportosítva azokat szolgáltatási ablakokba az akkumulátor kímélése érdekében.

Milyen fázisai vannak a Doze Mode-nak?

A Doze Mode nak két fázisa van: Light Doze (könnyű alvás) 5–30 perc után aktiválódik, lehetővé teszi az AlarmManager késleltetett működését. Deep Doze (mély alvás) 60–90 perc mozdulatlanság után következik be, agresszívan korlátozva a háttérfeladatokat akár 12 órás szolgáltatási ablakokkal.

Milyen korlátozásokat alkalmaz a Doze az alkalmazásokra?

A Doze blokkolja a hálózati kéréseket, elhalasztja az AlarmManagert (kivéve setAndAllowWhileIdle), erőszakosan felszabadítja a WakeLockot és csoportosítja a JobSchedulert szolgáltatási ablakokba. Kivétel — Foreground Service, FCM high-priority és a felhasználó Whitelist alkalmazásai.

Hogyan lehet hozzáadni egy alkalmazást a Doze Whitelisthez?

Kérje a REQUEST_IGNORE_BATTERY_OPTIMIZATIONS engedélyt a manifesztumban, és küldjön egy Intentet az ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS művelettel. A rendszer párbeszédablakot jelenít meg a felhasználónak. A Whitelist hez való hozzáadás egy kiváltság, amelyet a Google csak kritikus fontosságú alkalmazásoknak javasol.

Hogyan lehet tesztelni az alkalmazást Doze Mode-ban?

Használjon ADB parancsokat: adb shell dumpsys deviceidle force-idle deep a Deep Doze-ba lépéshez, adb shell dumpsys deviceidle step light Light Doze-hoz, adb shell dumpsys deviceidle unforce a kilépéshez. Ellenőrizze a WorkManager, AlarmManager és FCM működését minden módban.

Összefoglalás

  • Doze Mode — Android 6+ alvó mód, amely a készülék inaktivitásakor aktiválódik az akkumulátor kímélése érdekében
  • Light Doze — könnyű fázis 5–30 perc után, részleges korlátozások az AlarmManageren és hálózaton
  • Deep Doze — mély fázis 60–90 perc mozdulatlanság után akár 12 órás szolgáltatási ablakokkal
  • Korlátozások — hálózat blokkolása, AlarmManager elhalasztása, WakeLock felszabadítása
  • Kivételek — Foreground Service, FCM high-priority, Whitelist alkalmazások
  • WorkManager — ajánlott API háttérfeladatokhoz, automatikusan alkalmazkodik a Doze-hoz
  • Tesztelés — kötelező ellenőrzés ADB-n (dumpsys deviceidle) keresztül a kiadás előtt

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is