Godinama već posmatram isti scenario kod ljudi oko sebe. Telefon stoji na stolu, ekran je ugašen, niko ga ne dira satima, a procenat baterije pada kao da se u pozadini vrti najzahtjevnija 3D igra. Kada uđete u podešavanja baterije da vidite šta se dešava, na samom vrhu liste često se nalazi aplikacija koju niste svjesno pokrenuli danima. Prva reakcija većine ljudi jeste mahnito zatvaranje svih kartica u meniju nedavnih aplikacija, gašenje i ponovno paljenje telefona ili preuzimanje neke sumnjive aplikacije koja obećava da će očistiti memoriju i spasiti stvar.
Problem je u tome što većina nas i dalje posmatra pametne telefone kroz prizmu starog računarskog razmišljanja: ako sam zatvorio prozor, program je ugašen i ne radi ništa.
Na Androidu to jednostavno ne funkcioniše tako.
Činjenica da aplikacija nije prikazana na ekranu ne znači apsolutno ništa u pogledu toga šta ona zapravo radi iza scene. Proces može mirno sjediti u privremenoj memoriji bez ikakve potrošnje, što je sasvim normalno upravljanje resursima. Međutim, isti taj proces može u pozadini neprestano buditi procesor, tražiti vašu tačnu lokaciju preko GPS-a, preuzimati podatke sa servera ili pokušavati poslati neuspješni fajl na oblak. Najgore od svega je što sistemski prikaz potrošnje baterije rijetko objašnjava razliku između korisnog posla i čistog rasipanja energije.
Šta aplikacije zapravo rade dok vi ne gledate
Pozadinski rad sam po sebi nije neprijatelj. Naprotiv, bez njega bi pametni telefon bio prilično glup uređaj. Navigacija mora pratiti vašu rutu dok slušate muziku ili razgovarate na spikerfon. Aplikacija za dopisivanje mora primiti poruku i prikazati obavještenje. Servis za rezervne kopije treba prebaciti fotografije na sigurno, a fitnes narukvica mora sinhronizovati podatke o koracima.
Problem nastaje onog trenutka kada pozadinski rad postane prečest, predugačak ili tehnički katastrofalno izveden.
Uzmimo za primjer banalnu provjeru novih poruka ili vijesti. U dobro osmišljenom sistemu, server šalje kratak signal telefonu onog trenutka kada se nešto novo zaista desi, što zovemo push obavještenjem. Telefon tada na sekundu preuzme samo taj novi sadržaj i vrati se u stanje mirovanja.
Sa druge strane, loše napisana aplikacija koristi takozvano periodično ispitivanje (polling). To znači da aplikacija svakih nekoliko minuta sama budi procesor i postavlja serveru pitanje da li ima nečeg novog. Ako to radi svakih pet minuta, ona će tokom 24 sata probuditi uređaj skoro tri stotine puta, čak i ako se na serveru nije promijenio ni jedan jedini bajt.
Svako pojedinačno buđenje troši minimalno energije, ali kada se tome dodaju pokretanje radio-modula, uspostavljanje šifrovane veze, procesorska obrada i ponavljanje u krug, dobijate ozbiljno curenje baterije. Ako je signal mobilne mreže loš, cijela operacija traje još duže i troši znatno više struje jer modem radi pod maksimalnim opterećenjem.
Prečice u programiranju koje plaćaju korisnici
Kada se uđe u detalje razvoja softvera, postaje jasno da ogroman dio problema sa baterijom ne potiče iz hardverskih ograničenja, već iz komocije programera. Mnogo je lakše napisati jednostavnu petlju koja se ponavlja svakih nekoliko minuta nego implementirati pravilan sistem raspoređivanja zadataka koji poštuje stanje baterije i mrežne uslove.
Android već godinama nudi alate kao što je WorkManager, koji omogućava da se odloživi poslovi, poput noćne sinhronizacije ili čišćenja baze, obave u paketima kada je telefon priključen na punjač ili povezan na Wi-Fi. Umjesto da svaka aplikacija samostalno budi procesor kad joj padne na pamet, sistem ih grupiše i odradi sve odjednom.
Međutim, mnogi razvojni timovi biraju prečice. Oslanjaju se na mehanizme koji nasilno drže procesor budnim (wake locks), zloupotrebljavaju servise u prvom planu sa trajnim obavještenjima samo da ih operativni sistem ne bi ugasio, ili traže precizno praćenje lokacije za funkcije kojima bi bila dovoljna približna procjena grada u kojem se nalazite.
Ako aplikacija za naručivanje hrane ili kupovinu odjeće traži pristup najpreciznijoj GPS lokaciji čak i kada je zatvorena, tu se više ne radi o tehničkoj potrebi. Radi se ili o lijenosti onih koji su je pravili, ili o agresivnom prikupljanju korisničkih podataka. U oba slučaja, račun plaća vaša baterija.
Rat između Googlea i proizvođača telefona
Google je odavno svjestan ovog problema, zbog čega je kroz novije verzije Androida uveo funkcije poput Doze režima, App Standby ograničenja i adaptivnog upravljanja baterijom. Cilj ovih sistema je jednostavan: prepoznati aplikacije koje rijetko koristite i zabraniti im da bez potrebe troše resurse u pozadini dok telefon miruje.
Na papiru, to zvuči savršeno. U praksi, situacija je prilično haotična.
Proizvođači kao što su Samsung, Xiaomi, OnePlus ili Motorola ne koriste uvijek samo čisti Android mehanizam. Oni na operativni sistem dodaju sopstvene, često izuzetno agresivne sisteme za upravljanje baterijom. Ako ste ikada imali situaciju da vam poruka na Viberu, WhatsAppu ili Telegramu stigne tek kada otvorite samu aplikaciju, velika je vjerovatnoća da je fabrički softver vašeg telefona jednostavno ubio pozadinski proces da bi na silu uštedio nekoliko procenata baterije.
Tako smo došli do apsurdne situacije. Sa jedne strane imamo neodgovorno napravljene aplikacije koje nekontrolisano crpe energiju, a sa druge strane imamo proizvođače hardvera koji reaguju pretjerano grubo i gase legitimne procese. Korisnik ostaje zaglavljen u sredini, pokušavajući da shvati zašto mu baterija brzo curi ili zašto mu važne poruke i podsjetnici uopšte ne stižu na vrijeme.
Granica između stvarne uštede i narušene funkcionalnosti
Kada u podešavanjima Androida primijetite da neka aplikacija previše troši, najlakše je posegnuti za najstrožom opcijom: prebaciti je u status “Ograničeno” (Restricted) ili je staviti u duboko mirovanje.
To može biti odlično rješenje za aplikacije koje koristite povremeno, poput servisa za kupovinu avio-karata, aplikacija za dostavu ili prodavnica namještaja. Njima zaista nije potrebno pravo da osvježavaju ponudu dok vi spavate.
Međutim, neselektivno ograničavanje svega stvara novu vrstu frustracije:
- Poruke i pozivi sa komunikacionih platformi počinju da kasne ili uopšte ne stižu dok ne uđete u aplikaciju.
- Rezervne kopije fotografija i dokumenata ostaju zaglavljene na pola puta.
- Vidžeti na početnom ekranu prikazuju netačne podatke o vremenu ili rasporedu.
- Fitnes aplikacije gube kontinuitet praćenja aktivnosti ili ne bilježe pređenu rutu kako treba.
Rješenje nije u tome da telefonu oduzmemo sve pametne mogućnosti kako bi baterija trajala pola dana duže. Cilj je pronaći mjeru i eliminisati nepotrebno trošenje bez žrtvovanja onoga zbog čega telefon uopšte i koristimo.
Kako ja pristupam ovom problemu
Umjesto da automatski kažnjavam svaku aplikaciju koja se pojavi na listi potrošnje, držim se nekoliko jednostavnih pravila koja su se u praksi pokazala znatno korisnijim od bilo kakvih fabričkih čistača memorije.
Prvo, gledam odnos između vremena provedenog na ekranu i aktivnosti u pozadini. Ako sam pola sata gledao video zapise ili koristio navigaciju dok vozim, potpuno je normalno da je ta aplikacija pri vrhu. Međutim, ako aplikacija ima tri minuta rada na ekranu, a tri sata rada u pozadini, to je jasan signal za uzbunu.
Drugo, provjeravam dozvole za lokaciju. Ogroman broj aplikacija bez ikakvog stvarnog razloga traži stalni pristup GPS-u. Prebacivanje dozvole na opciju “Dozvoli samo dok se aplikacija koristi” često rješava veći dio neobjašnjive potrošnje bez ikakvih negativnih posljedica po funkcionalnost.
Treće, isključujem nepotrebna marketinška obavještenja unutar samih aplikacija. Svako obavještenje koje vam šalje popuste ili preporuke zahtijeva komunikaciju sa serverom i buđenje uređaja.
Tek ako ništa od toga ne pomogne, a aplikacija mi nije presudna za svakodnevnu komunikaciju, prebacujem je u ograničeni režim rada ili je jednostavno deinstaliram i koristim njenu veb verziju preko pregledača.
Tehnologija mora služiti nama, a ne obrnuto
Nerealno je očekivati da moderni pametni telefoni traju danima uz stalnu povezanost sa mrežom, desetine aktivnih servisa i ekrane visoke rezolucije. Ipak, neprihvatljivo je i to da korisnik mora igrati ulogu dežurnog policajca koji svakodnevno provjerava koji je servis bez razloga pojeo trećinu baterije dok je telefon ležao u džepu.
Krajnja odgovornost leži na programerima i tehnološkim kompanijama. Vrijeme je da se prestane sa praksom pisanja brzopletog koda koji ignoriše pravila platforme samo zato što je to bilo najlakše rješenje u tom trenutku. Dok se to ne promijeni, jedina zaštita koju imamo jeste razumijevanje načina na koji naši uređaji funkcionišu i odbijanje da slijepo trpimo loše optimizovan softver.
IZVORI: