2024. április 25., csütörtök

Gyorskeresés

Android doze mód és doze profilok

Írta: | Kulcsszavak: Android doze mode deep light

[ ÚJ BEJEGYZÉS ]

Az alvás- és mélyalvás funkció Marshmallow-n lett bevezetve, azóta Nougat-on, Oreo-n és Pie-on valamint Android 10/Q-n is reszelgettek rajta, tettek hozzá plusz faktorokat / változókat a működtetéshez. Lényegében arról van szó, hogy mikor, milyen körülmények között és milyen időközökkel kerüljön a készülék alvásba vagy mélyalvásba és ott mennyi időt töltsön. A doze kétféleképp működik, van egy light és egy deep doze állapot, ha lemegy doze-ba ott egyáltalán nincs wakelock mert nem figyeli, nincs jobschedule, nincs sync, nincs kb. semmi kb ami felébresztené (ezért nincs értesítés se általánan, csak ha olyan értesítés jönne ami urgent-nek van jelölve mert úgy írta meg az app fejlesztője) szóval a maintenance window eljöveteléig kb nincs semmi csak a tétlen állapot, viszont ébred majd ha eljön a maintenance window és szétnéz hogy mit kell sync-elni, satöbbi, van-e értesítés..

Lehet választani melyik mód tetszik, ha instant kell mindenről értesítés akkor max. a light marad.. ha akkuhuszárkodás kell akkor gyorsabb deep kell.. a normál mód (az android aosp stock beállítások) nagyon hosszú időkkel dolgoznak így inkább csak light van nappal, este meg ha nagyon nem mozgatod a telefont meg nem is nagyon csinálsz vele semmit.. na akkor lemegy deep-be. Van kb két tucat változó, szorzó meg időkorlát, lehet vele játszani. Az akkukímélő módból "kivétellel" az appok kivehetők ebből a doze módból, úgy értem az appot lehet "nem optimalizáltra" állítani és akkor arra az appra nem fog vonatkozni a doze így ha a nem optimalizált app wakelock-ot ad ki.. vagy csinálni akar valami Job-ot vagy Sync-et akkor csinálni fogja.. (A listát amúgy a rendszer a /data/system/deviceidle.xml file-ban tárolja.) Megvan rá a megfelelő programozási technika hogy hogy lehet úgy "életben tartani" az appokat hogy menjenek doze alatt is (foreground services..) csak ezt a fejlesztők nem nagyon csinálják jól.. lehet azért, mert sok Android verzióval kell kompatibilisnek maradni.. és így az "újabbak" általában szívnak egyelőre még..

Doze mód magyarul st3v3np3t3r tollából: Röviden,tömören az Android Doze módról
Doze mód mélyvíz #1 (angol)
Doze mód mélyvíz #2 (angol)
Doze mód mélyvíz #3 (angol, végén a doze lépcsők és státuszok blokkdiagramja (mi után mi következik))
Doze mód mélyvíz #3.5 - ugyanaz pepitában
AOSP forrás ide vonatkozó része - pontosabban a változók a settings.db-ben.

Ha szerkesztésre adod a fejed:
Doze Settings Editor - @XDA @GitHub (app mappában lesz az APK)
Comatose - szintén egy app amiben a doze mód változóinak profilját lehet állítani
Doze paraméterek listája & jelentése (angol)
Egy doze profil leírása XDA-n pontról pontra (angol)
Ha használsz .*GApps-ot akkor a Google okosabb mint te és alapból visszaírja a rendszer alapértelmezettjére a doze változó értékeket.. nagyon remek.. de kijátszható egyszerűen:

Vagy letiltod ezt a szolgáltatást:
pm disable --user 0 com.google.android.gms/.phenotype.service.sync.PhenotypeConfigurator

Vagy felteszed a Magisk SQLite modult és törlöd a megadott adatbázis megadott rekordját:
sqlite3 /data/data/com.google.android.gms/databases/phenotype.db "DELETE FROM Flags WHERE name = 'device_idle_constants';"
Csinálhatod nyilván adb-vel vagy a telefonon is terminálból.

Csinálhatod SQLite manager-el is..

A már említett Doze Settings Editor-ban van vagy 4 profile egyébként.. de ha több kell vagy többet akarsz kipróbálni de nem akarod egyesével pötyögtetni akkor van egy TeMeFI nevű app ami brutálisan borzasztósok infot tud kiszedni a telefonból (több, mint 500 script van benne!!!) és az egyik módja a az, hogy az aktuális beállításokat összehasonlítja a kiválasztott profil beállításaival (Pre-View / Compare Doze) és egy másik módja a kiválasztott doze profil alkalmazása (SET Doze). Legkönnyebben a nagyítóra kattintva és doze-ra keresve leled meg ha még nem ismered nagyon az appot. Ki tudja rajzolni is a restart óta történt doze módok változását egy tök jó szines diagramon (Doze Cycle Graph). Nálam egész meggyőzően működik a pyamsoft nevű profil, a többi is jó csak az én felhasználási szokásaimnak túl aggresszívek (túl sok a deep sleep és a maintenance window-ba nem mindig fér bele egy frissítés és kés(het)nek kicsit az értesítések).

Példabeállítás adb-n keresztül:
adb shell
majd utána:

vagy készüléken root-al terminálban
su
majd utána:

Beállítás Android 11 és alatta:
settings put global device_idle_constants inactive_to=300000,motion_inactive_to=120000,idle_after_inactive_to=300000,locating_to=10000,light_idle_to=300000,light_max_idle_to=600000,min_time_to_alarm=600000,idle_pending_factor=3.0,idle_factor=3.0
Itt megjegyezném hogy az automatikus visszaállás ellen a fent olvashatókat ne felejtse el aki belevág.

Visszaállítás / beállítások törlése:
settings delete global device_idle_constants

Beállítás Android 12 és felette:

cmd device_config set_sync_disabled_for_tests persistent
cmd device_config put device_idle inactive_to 300000
cmd device_config put device_idle motion_inactive_to 120000
cmd device_config put device_idle idle_after_inactive_to 300000
cmd device_config put device_idle locating_to 10000
cmd device_config put device_idle light_idle_to 300000
cmd device_config put device_idle light_max_idle_to 600000
cmd device_config put device_idle min_time_to_alarm 600000
cmd device_config put device_idle idle_pending_factor 3.0
cmd device_config put device_idle idle_factor 3.0

Visszaállítás / beállítások törlése:
cmd device_config reset trusted_defaults device_idle
cmd device_config set_sync_disabled_for_tests none

Copyright © 2000-2024 PROHARDVER Informatikai Kft.