Cikkek ·
Harc az akkumulátor-spórolással: így marad megbízható egy háttérben futó app
A telefongyártók energiakezelése leállítja a háttérben futó alkalmazásokat. Hogyan rögzít mégis megbízhatóan a KlipTrack: ébresztő riasztás, ébresztő értesítés, gyártói beállítások és jelzés az irodának.
Egy munkaidő-nyilvántartó app akkor jó, ha senki nem foglalkozik vele. A telefon a zsebben van, a mérés magától történik, és este ott a jelenléti ív. A legnagyobb ellenfele ennek nem a gyenge térerő és nem a pince, hanem maga a telefon: minden gyártó a saját módján próbálja spórolni az akkumulátort, és ehhez a legegyszerűbb eszköz az, hogy leállítja a háttérben futó alkalmazásokat.
Az első jel: két és fél óra csend
Egy este az egyik telefon két és fél órára elhallgatott, a riport pedig olyan távozást mutatott, ami nem történt meg. A naplóból kiderült az ok: az Android saját energiatakarékos állapota (Doze) lefagyasztotta az alkalmazást.
Az első javaslat az volt, hogy a telefonon állítsuk az appot „korlátlan” akkumulátorhasználatra. A megrendelő válasza pontos volt: ez nem megoldás, mert a kollégák nem fognak a beállításokban kutatni. Igaza volt. Ha a hiba abból jön, hogy valaki nem csinált meg valamit, akkor a javításnak a rendszerben a helye, nem egy utasításban.
Ébresztő riasztás munkaidőben
A megoldás egy olyan ébresztő lett, amit az Android az energiatakarékos állapotban is kézbesít: munkaidőben negyedóránként felkelti az alkalmazást. Ez az egyetlen eszköz, ami Doze alatt is működik anélkül, hogy a felhasználónak bármit be kellene állítania.
Az első változatban volt egy csapda. Az ébresztés minden alkalommal újraindította a helymérést, ez pedig nullázta az app saját félórás jelenlét-jelzésének időzítőjét. Negyedóránkénti újraindítás mellett a félórás jelzés soha nem futott volna le. Ez még élesítés előtt kiderült, amikor a megrendelő megkérdezte, nem fogja-e ez fölöslegesen meríteni az akkumulátort és fogyasztani az adatot. A kérdésre adott válasz közben néztem át újra az egészet, és még élesítés előtt kijavítottuk: az ébresztés azóta nem nullázza a jelzés időzítőjét.
A gyártók saját rétege
A szabványos Android-beállítás nem elég. Több gyártó a Doze fölött a saját energiakezelőjét is futtatja, saját engedélyező listával, amit egy alkalmazás nem tud se kiolvasni, se kérni. Élőben is láttuk: egy Samsung telefon, amelyen a szabványos kivétel be volt állítva, egész nap nagyjából 16 percenként esett ki és jött vissza.
Erre nincs tökéletes megoldás, csak a lehető legjobb: az app felismeri a gyártót, és egy gombbal a gyártó saját beállító képernyőjét nyitja meg, mellette pedig leírja, mit kell ott átállítani. A Magyarországon gyakori márkákra készült ilyen útmutató: Samsung, Xiaomi, Redmi, POCO, Huawei, Honor, OPPO, Realme, Vivo és OnePlus. Ezek a képernyők nem dokumentáltak, egy rendszerfrissítés után megszűnhetnek, ezért az app több lehetőséget próbál végig sorban, és ha egyik sem nyílik meg, a szabványos beállításoknál marad. Ismeretlen gyártónál inkább nem ad tanácsot, mint hogy rosszat adjon.
A szerver is figyel
A telefon munkaidőben félpercenként jelentkezik be a szerveren a beállításaiért. Ha tíz percig nem jelentkezik, a szerver ebből tudja, hogy az app nem fut, és egy magas prioritású értesítéssel felébreszti. Két helyzetben teszi ezt:
- közvetlenül a munkaidő kezdete előtt, hogy az éjszaka leállt telefon már a nap elején mérjen, ne csak akkor, amikor valaki először kézbe veszi;
- munkaidőben bármikor, hogy ha egy telefont délelőtt tízkor leállít az energiakezelője, perceken belül visszakerüljön.
Ezzel takarékosan kell bánni. Ha egy magas prioritású értesítés után nem történik semmi látható, a Google idővel lefokozza az app értesítéseit, a sima értesítés pedig már nem ébreszt fel egy alvó telefont. Ezért ha a telefon válaszolt az előző ébresztésre, legközelebb fél óra múlva kérdezhető újra; ha nem válaszolt (ki van kapcsolva, kézzel le van állítva, a gyártó befagyasztotta), akkor csak kétóránként.
Jelzés az irodának
A telefon jelenti a szervernek a saját energiabeállításait is: kapott-e kivételt az akkumulátor-optimalizálás alól, be van-e kapcsolva az energiatakarékos mód, és kikapcsol-e a GPS zárolt képernyőnél. Ha egy telefonon olyan beállítás jelenik meg, ami zavarja a rögzítést, az admin e-mailt kap róla. Nem kell megvárni a hét végi riportot ahhoz, hogy kiderüljön, egy telefon napok óta rosszul mér.
Az eszköznaplóban az is látszik, hogy egy ébresztő értesítés megérkezett-e a telefonra, és az app már futott-e, amikor odaért. Így a „miért nem mért?” kérdésre nem találgatás a válasz.
Amit ebből tanultam
A telefon nem a mi eszközünk. Azt nem tudjuk megakadályozni, hogy a gyártó leállítsa az appot. Azt igen, hogy gyorsan visszahozzuk, és szóljunk, ha nem sikerül.
Ez a rész nem látszik a felületen, és senki nem fogja megdicsérni. Mégis ezen múlik, hogy a jelenléti ív a valóságot mutatja-e. Egy terepen használt alkalmazásnál ez nem kiegészítő funkció, hanem maga a termék.
A következő részben arról írok, miért kapcsolható ki a KlipTrackben szinte minden: Kapcsolók, nem csomagok.