Doze Mode: esensya, mga phase at mekanismo ng pagtitipid ng enerhiya

May-akda: IT Sectr Nai-publish: 2026-03-28 Oras ng pagbabasa: 10 min

Ang Doze Mode ay isang mode ng pagtitipid ng enerhiya sa Android na ipinakilala sa bersyon 6.0 Marshmallow, na makabuluhang naglilimita sa aktibidad sa background ng mga app kapag hindi aktibo ang device. Inililipat ng system ang mga app sa estado ng pinababang konsumo ng kuryente, ipinagpapaliban ang mga network request, synchronization at JobScheduler upang pahabain ang buhay ng baterya. Ayon sa pagsusuri ng Android Developers, 2025, ang Doze Mode ay nagbibigay-daan upang mapataas ang standby time ng device nang 2–3 beses depende sa modelo at bersyon ng OS.

Mga Pangunahing Punto

  • Doze Mode — sleep mode ng Android 6+, na naglilimita sa aktibidad sa background kapag hindi aktibo
  • Dalawang phase — Light Doze (magaan na tulog) at Deep Doze (malalim na tulog) na may iba't ibang paghihigpit
  • Mga service window — maiikling panahon kung kailan maaaring magsagawa ng mga task ang mga app sa Deep Doze
  • Whitelist — mga exception para sa mga app na pinapayagan ang background work sa Doze
  • GCM/FCM — ang high-priority push notification ay gumigising sa device mula sa Doze

Ano ang Doze Mode

Doze Mode ay isang built-in na mekanismo ng pagtitipid ng enerhiya sa Android na naa-activate kapag ang device ay hindi naka-charge, naka-off ang screen at hindi nakikipag-ugnayan ang user sa device sa loob ng isang tiyak na oras. Ang layunin ng Doze ay upang mabawasan ang aktibidad sa background ng mga app upang mapahaba ang buhay ng baterya sa standby mode. Ipinagpapaliban ng system ang JobScheduler, account synchronization, AlarmManager at mga network request.

Ang mode ay ipinakilala sa Android 6.0 Marshmallow (API 23) at makabuluhang pinabuti sa mga sumusunod na bersyon. Sa Android 7.0 Nougat lumitaw ang pangalawang phase (Light Doze) na naa-activate sa paggalaw ng device. Ipinakilala ng Android 8.0 ang karagdagang mga paghihigpit sa mga background service na gumagana kasabay ng Doze. Sa Android 12+, ang Doze ay isinama sa na-update na sistema ng pamamahala ng baterya na sumusuri sa gawi ng user.

Mahalagang maunawaan: Hindi ganap na pinapatay ng Doze Mode ang mga app. Inililipat nito ang mga ito sa estado na may mga ipinagpaliban na task, ngunit hindi pinapatay ang mga proseso. Ang Foreground Service na may notification ay patuloy na gumagana, ang mga high-priority push notification (FCM high-priority) ay naihahatid, at ang mga alarm ay tumutunog ayon sa iskedyul. Ang Doze ay nakakaapekto lamang sa mga background operation na hindi nakikita at hindi inaasahan ng user sa sandaling iyon.

Mga kondisyon ng pag-activate

Doze Mode ay naa-activate kapag natugunan ang lahat ng kondisyon: naka-off ang screen nang higit sa 30 minuto (unang pag-activate), hindi gumagalaw ang device (ginagamit ang accelerometer), hindi naka-charge. Kung kukunin ng user ang telepono o isaksak ang charger, agad na na-deactivate ang Doze. Sa Android 7+, ang Light Doze ay naa-activate pagkatapos ng 5 minutong hindi aktibo, kahit na gumagalaw ang device.

Paano gumagana ang Doze Mode

Doze Mode ay namamahala sa aktibidad sa background sa pamamagitan ng system service na DeviceIdleController, na sumusuri sa estado ng mga sensor, screen at charger. Kapag natugunan ang lahat ng kondisyon ng pag-activate, inililipat ng system ang mga app sa standby mode, pinapangkat ang kanilang mga request sa mga service window. Sa loob ng mga window na ito, lahat ng ipinagpaliban na task — network calls, synchronization, AlarmManager — ay isinasagawa nang naka-batch.

Ang system PowerManager ay kumokontrol kung aling mga app ang maaaring lumabas mula sa Doze. Ang mga high-priority push notification (FCM high-priority) ay maaaring gumising sa device para maghatid ng mensahe. Hindi rin pinapansin ng system ang Doze para sa mga app na idinagdag ng user sa Whitelist ng battery optimization. Ang lahat ng iba pang app ay dapat maghintay ng susunod na service window.

Ang tagal ng mga service window sa Deep Doze ay tumataas nang exponentially: unang window pagkatapos ng 1 oras, pangalawa pagkatapos ng 2 oras, pangatlo pagkatapos ng 4 na oras at iba pa hanggang sa maximum na interval na 12 oras. Nangangahulugan ito na habang mas matagal ang device sa Doze, mas madalang na makapagsagawa ang mga app ng background task — ang baterya ay napakatipid nang maximum na agresibo.

Epekto sa mga network request

Sa Doze Mode, lahat ng network request ay sinuspinde hanggang sa pagdating ng service window. Tanging FCM high-priority na mensahe (may tag na “high_priority” sa payload) at mga signal mula sa AlarmManager na may mga flag na setAndAllowWhileIdle() o setExactAndAllowWhileIdle() ang exception. Ang mga ordinaryong network call sa pamamagitan ng Retrofit, OkHttp o Volley ay hindi isasagawa hanggang sa magbukas ang window.

Mga phase ng Doze Mode

Doze Mode ay binubuo ng dalawang phase: Light Doze (magaan na tulog) at Deep Doze (malalim na tulog). Bawat phase ay nagpapatupad ng sarili nitong mga paghihigpit at may iba't ibang threshold ng pag-activate. Ang pag-unawa sa pagkakaiba sa pagitan ng mga phase ay mahalaga para sa developer na nagdidisenyo ng mga background task na lumalaban sa mode ng pagtitipid ng enerhiya.

Light Doze (magaan na tulog)

Light Doze ay naa-activate pagkatapos ng 5–30 minuto ng hindi aktibo (naka-off ang screen, walang galaw). Sa phase na ito, ang mga network request at synchronization ay sinuspinde, ngunit ang AlarmManager at JobScheduler ay patuloy na gumagana nang may maliliit na pagkaantala. Ang mga app ay maaaring lumabas mula sa Light Doze kapag nakatanggap ng push notification o kapag naka-charge. Ang Light Doze ay hindi nangangailangan ng kumpletong immobility — ang device ay maaaring gumalaw.

Deep Doze (malalim na tulog)

Deep Doze ay nangyayari pagkatapos ng 60–90 minuto ng hindi aktibo na walang galaw ang device (hindi nakikita ng accelerometer ang paggalaw). Sa Deep Doze, mas agresibong ipinagpapaliban ng system ang mga task: mas madalang magbukas ang mga service window (na may exponentially tumataas na interval), ang AlarmManager ay gumagana lamang sa mga flag na setAndAllowWhileIdle(), at ang WakeLock ay hindi gumagana sa normal na mode. Ang mga app na wala sa Whitelist ay halos ganap na nawawalan ng aktibidad sa background.

ParameterLight DozeDeep Doze
Oras ng pag-activate5–30 minuto60–90 minuto
Kinakailangang galawHindi kinakailanganImmobility
Interval ng window10–60 minuto1–12 oras
AlarmManagerGumagana nang may pagkaantalawithAllowWhileIdle lang
Network sa mga windowAvailableAvailable

Mga paghihigpit sa Doze Mode

Doze Mode ay nagpapatupad ng ilang kategorya ng mga paghihigpit na dapat isaalang-alang ng developer kapag nagdidisenyo ng app. Ang pagbalewala sa mga paghihigpit na ito ay nagreresulta sa hindi pagganap ng mga background task at nakikita ng user ang hindi tamang paggana ng app — kawalan ng mga update, hindi naipadalang mensahe, hindi nagawang synchronization.

Mga paghihigpit sa network

Lahat ng network request ay hinaharangan hanggang sa pagdating ng service window. Kasama rito ang mga HTTP call, WebSocket connection, pag-download ng file. Exception — FCM high-priority na mensahe na dumadaan sa hiwalay na channel ng Google Play Services, hindi umaasa sa Doze. Para sa synchronization ng kritikal na data, inirerekomenda ang paggamit ng WorkManager na may patakarang NetworkType.CONNECTED.

Mga paghihigpit sa AlarmManager

AlarmManager sa Deep Doze ay ipinagpapaliban ang lahat ng alarm maliban sa mga ginawa gamit ang mga method na setAndAllowWhileIdle() at setExactAndAllowWhileIdle(). Gayunpaman, kahit ang mga method na ito ay may limitasyon — hindi hihigit sa 1 pag-activate sa bawat 9 minuto bawat app. Ang mga eksaktong alarm na setExact() sa Deep Doze ay hindi ginagarantiyahan ang pag-activate sa itinakdang oras.

Mga paghihigpit sa WakeLock

WakeLock sa Doze Mode ay gumagana nang hindi karaniwan: hindi pinapanatili ng system ang sleep lock para sa mga app sa labas ng Whitelist. Kahit na nakuha ng app nang tama ang PARTIAL_WAKE_LOCK, pagdating ng Deep Doze ay maaaring puwersahin itong bitawan ng system. Ang tanging paraan upang garantiyahan ang pagganap ng task sa Doze ay ang paggamit ng Foreground Service na may notification.

  • Network — lahat ng request ay ipinagpapaliban hanggang service window, maliban sa FCM high-priority
  • AlarmManager — eksaktong alarm ay ipinagpapaliban; setAndAllowWhileIdle — max 1/9 min
  • WakeLock — puwersahang pinakawalan para sa mga app sa labas ng Whitelist
  • JobScheduler — mga task ay pinapangkat sa mga service window na may exponential interval
  • Synchronization — Account SyncManager ay sinuspinde hanggang lumabas sa Doze

Whitelist at mga exception

Whitelist (white list) Doze ay ang set ng mga app na pinapayagan ng system na magkaroon ng background na aktibidad sa mode ng pagtitipid ng enerhiya na may minimal na paghihigpit. Maaaring manu-manong magdagdag ng mga app ang user sa pamamagitan ng Settings → Baterya → Battery Optimization. Ang mga system app, launcher at Google Play Services ay nasa Whitelist bilang default.

Ang developer ay maaaring humiling ng pagdagdag sa Whitelist sa pamamagitan ng system dialog na may Intent ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS. Para dito, kinakailangan ang permission na REQUEST_IGNORE_BATTERY_OPTIMIZATIONS sa manifest. Gayunpaman, hindi inirerekomenda ng Google na humingi ng exception nang walang matibay na dahilan — ang mga app na umaabuso sa kakayahang ito ay nanganganib na tanggihan sa pag-publish sa Google Play.

Kung walang Whitelist, ang app ay maaaring gumamit ng FCM high-priority para gisingin ang device mula sa Doze. Bawat naturang mensahe ay nagbibigay sa app ng maikling window (10–30 segundo) para magsagawa ng task. Para sa mas mahabang operasyon, ang app ay dapat maglunsad ng Foreground Service na magpapatuloy sa paggana sa mga service window ng Doze. Nagbibigay din ang Google ng mekanismo ng exemption para sa ilang uri ng app: navigation, medikal, messaging.

Paano suriin ang status ng Whitelist

Para suriin kung ang app ay nasa Whitelist ng battery optimization, ginagamit ang method na powerManager.isIgnoringBatteryOptimizations(). Kung ang method ay nagbabalik ng false, ang app ay sumusunod sa lahat ng paghihigpit ng Doze. Kung true — ang app ay maaaring gumamit ng Wakelock, AlarmManager at network nang walang paghihigpit kahit sa Deep Doze. Gayunpaman, ang pag-abuso sa pribilehiyong ito ay hahantong sa masamang review mula sa mga user.

Pagsubok ng Doze Mode

Pagsubok ng gawi ng app sa Doze Mode ay isang mandatoryong yugto ng pag-develop, dahil maaaring sirain ng Doze ang mga background function. Nagbibigay ang Android ng mga command line tool sa pamamagitan ng ADB para sapilitang ilipat ang device sa Light Doze at Deep Doze. Ang pagsubok ay dapat isagawa sa pisikal na device o emulator na may Android 6.0+.

Para pumasok sa Light Doze ginagamit ang command na adb shell dumpsys deviceidle step light. Para sa Deep Doze — adb shell dumpsys deviceidle step deep. Ang command na adb shell dumpsys deviceidle force-idle deep ay agad na inililipat ang device sa Deep Doze nang hindi naghihintay ng standard timeout. Pagkatapos ng pagsubok, ang Doze ay pinapatay gamit ang command na adb shell dumpsys deviceidle unforce.

bash
# Sapilitang pagpasok sa Light Doze
$ adb shell dumpsys deviceidle step light

# Sapilitang pagpasok sa Deep Doze
$ adb shell dumpsys deviceidle step deep

# Agad na paglipat sa Deep Doze
$ adb shell dumpsys deviceidle force-idle deep

# Paglabas mula sa Doze
$ adb shell dumpsys deviceidle unforce

# Pagtingin ng status ng Doze
$ adb shell dumpsys deviceidle

Pagsusuri ng paggana ng app

Pagkatapos lumipat sa Doze Mode, kailangang suriin: kung gumagana ang network request (dapat ipinagpaliban), kung nag-a-activate ang AlarmManager, kung naihahatid ang FCM messages, kung tama ang pagganap ng WorkManager tasks. Ang WorkManager sa Doze ay patuloy na gumagana: ang mga task nito ay isinasagawa sa mga service window. Gayunpaman, kung ang task ay nangangailangan ng agarang pagganap, dapat tukuyin ang setExpedited() o gumamit ng Foreground Service.

Mga pinakamahusay na kasanayan para sa Doze Mode

Ang pag-develop ng app na lumalaban sa Doze Mode ay nangangailangan ng pag-reconsider ng approach sa background tasks. Inirerekomenda ng Google na idisenyo ang app upang gumana nang tama sa anumang paghihigpit ng Doze, nang hindi umaasa sa agarang pagganap ng background operations. Ang pangunahing prinsipyo — gamitin ang WorkManager para sa lahat ng background task na maaaring ipagpaliban.

Gamitin ang WorkManager

WorkManager ay ang inirerekomendang Google API para sa background tasks, dahil awtomatiko itong umaangkop sa Doze. Gumagamit ang WorkManager ng JobScheduler (API 23+) o AlarmManager + BroadcastReceiver sa mga lumang bersyon. Ang WorkManager tasks ay isinasagawa sa pinakamalapit na service window ng Doze, at kung kinakailangan — agad sa pamamagitan ng Expedited Work (Foreground Service sa ilalim ng hood).

Foreground Service para sa kritikal na tasks

Kung ang task ay hindi maaaring ipagpaliban (media playback, navigation, VoIP), gamitin ang Foreground Service na may mandatoryong notification. Ang Foreground Service ay nakakakuha ng exception mula sa Doze: maaari itong humawak ng WakeLock at magsagawa ng network request. Gayunpaman, kahit ang Foreground Service ay sumusunod sa patakaran ng Deep Doze service window para sa ilang uri ng task — halimbawa, dataSync.

FCM high-priority para sa mga notification

Para maghatid ng mga mensahe na nangangailangan ng agarang atensyon (papasok na tawag, urgent notification), gamitin ang FCM high-priority na mensahe. Ang ganitong mga mensahe ay gumigising sa device mula sa Doze at nagbibigay sa app ng maikling window para sa pagproseso. Huwag gumamit ng high-priority para sa ordinaryong notification — ito ay hahantong sa mabilis na pagkaubos ng baterya at maaaring ituring ng Google Play na paglabag sa patakaran.

  • WorkManager — ginustong API para sa lahat ng ipinagpaliban na background task
  • Foreground Service — para sa kritikal na task na may nakikitang notification
  • FCM high-priority — para maghatid ng urgent message na may paggising sa device
  • Huwag humingi ng Whitelist nang walang matinding pangangailangan — pinapalala nito ang karanasan ng user
  • Subukan ang app sa Light at Deep Doze sa pamamagitan ng ADB bago ilabas

Mga Madalas Itanong

Ano ang Doze Mode sa Android?

Doze Mode ay isang mode ng pagtitipid ng enerhiya ng Android 6+ na naglilimita sa aktibidad sa background ng mga app kapag hindi ginagamit ang device (naka-off ang screen, walang galaw). Ipinagpapaliban ng system ang mga network request, synchronization at JobScheduler, pinapangkat ang mga ito sa mga service window para makatipid ng baterya.

Ano-ano ang mga phase ng Doze Mode?

Doze Mode ay may dalawang phase: Light Doze (magaan na tulog) ay naa-activate pagkatapos ng 5–30 minuto, pinapayagan ang AlarmManager na gumana nang may pagkaantala. Deep Doze (malalim na tulog) ay nangyayari pagkatapos ng 60–90 minuto ng immobility, agresibong nililimitahan ang background tasks na may service window hanggang 12 oras.

Anong mga paghihigpit ang ipinapataw ng Doze sa mga app?

Doze ay humaharang ng network request, ipinagpapaliban ang AlarmManager (maliban sa setAndAllowWhileIdle), puwersahang pinakawalan ang WakeLock at pinapangkat ang JobScheduler sa mga service window. Exception — Foreground Service, FCM high-priority at mga app sa Whitelist ng user.

Paano magdagdag ng app sa Whitelist ng Doze?

Humingi ng permiso na REQUEST_IGNORE_BATTERY_OPTIMIZATIONS sa manifest at magpadala ng Intent na may action na ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS. Magpapakita ang system ng dialog sa user. Ang pagdagdag sa Whitelist ay isang pribilehiyo na inirerekomenda ng Google na gamitin lamang ng mga kritikal na app.

Paano subukan ang app sa Doze Mode?

Gumamit ng ADB command: adb shell dumpsys deviceidle force-idle deep para pumasok sa Deep Doze, adb shell dumpsys deviceidle step light para sa Light Doze, adb shell dumpsys deviceidle unforce para lumabas. Suriin ang paggana ng WorkManager, AlarmManager at FCM sa bawat mode.

Buod

  • Doze Mode — sleep mode ng Android 6+, naa-activate kapag hindi aktibo ang device para makatipid ng baterya
  • Light Doze — magaan na phase pagkatapos ng 5–30 minuto, bahagyang paghihigpit sa AlarmManager at network
  • Deep Doze — malalim na phase pagkatapos ng 60–90 minuto ng immobility na may service window hanggang 12 oras
  • Mga paghihigpit — pagharang ng network, pagpapaliban ng AlarmManager, pagpapakawala ng WakeLock
  • Mga exception — Foreground Service, FCM high-priority, mga app sa Whitelist
  • WorkManager — inirerekomendang API para sa background tasks, awtomatikong umaangkop sa Doze
  • Pagsubok — mandatoryong pagsusuri sa pamamagitan ng ADB (dumpsys deviceidle) bago ilabas

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din