Jak system Android oszczędza energię?

7 minut czytania
Komentarze

Witajcie w kolejnym odcinku serii dla chcących nauczyć się programowania. Jak co tydzień przychodzę do Was z kolejną porcją wiedzy o systemie Android. Dzisiaj pokażę wam, jak oprogramowanje od Google oszczędza energię. Wraz z rozwojem telefonów zapotrzebowanie na nią rosło – producenci wprowadzali coraz to większe wyświetlacze a twórcy oprogramowania tworzyli coraz bardziej zaawansowane aplikacje. Programy nie są już tylko prostymi, kilkuokienkowymi aplikacjami działającymi offline – większość serwisów wymaga synchronizacji w chmurze i wykonywania pewnych działań w tle.

Jak to wyglądało z perspektywy programisty?

W początkowych wersjach Androida programiści mieli prawdziwe eldorado, jeśli chodzi o pisanie aplikacji. Mieliśmy dostęp do czego chcieliśmy i kiedy chcieliśmy. Sam pamiętam, że podczas nauki napisałem aplikację, która co kilkanaście sekund sprawdzała lokalizację użytkownika, porównywała ją z wcześniejszymi lokalizacjami zapisanymi w bazie danych i wykonywała zapytania na zewnętrzny serwer. Teraz wyobraźmy sobie sytuację, że na urządzeniu mamy zainstalowane kilkanaście takich aplikacji – brzmi jak jakiś niestworzony scenariusz jednak to prawda. Wystarczy przypomnieć choćby przykład aplikacji Facebooka, która potajemnie nagrywała użytkownika bez jego wiedzy. Nie będę się rozwodził nad moralnością takiego rozwiązania, jednak wyobraźcie sobie jak takie coś drenowało naszą baterię. Na szczęście Google stał się świadomy problemu i postanowił coś z tym zrobić.

Android Marshmallow przychodzi na ratunek!

Jest 28 maja 2015 – zapewne data ta kojarzy wam się wyłącznie z 755 rocznicą odkupienia Kęt i Czeladzi od klasztoru benedyktynek w Staniątkach przez księcia opolsko-raciborskiego Władysława. Nic bardziej mylnego, to właśnie wtedy Google zaprezentowało następce Androida Lollipop. Podczas całego Google I/O tematowi oszczędzania energii zostało poświęcone kilka sesji – niżej podlinkowałem film w którym krótko zostały opisane wszystkie elementy oszczędzania energii. Zostało zaprezentowane również coś, co nazywa się Doze, ale jest to na tyle ważny mechanizm, że poświęcimy mu osobny akapit.

Doze – co to właściwie jest?

Pewnie zauważyłeś nieraz, że gdy włączasz ekran telefonu po dłuższym czasie nieaktywności, to nagle dostajesz kilka powiadomień z różnych aplikacji. Pewnie nie byłeś tego świadomy, ale to jest celowe działanie zaimplementowane przez twórców Androida.

Doze z angielskiego możemy przetłumaczyć jako drzemka – to słowo świetnie oddaje działanie tego mechanizmu. Programiści Androida stwierdzili, że jeśli odłożymy nasz telefon na przykład na szafkę, to wcale nie potrzebujemy tych wszystkich funkcjonalności jakie zapewniają nam różne aplikacje. Dla przykładu aplikacja pobierająca dane giełdowe nie musi tego robić co dwie sekundy kiedy Ty śpisz a telefon leży nieruchomo. Tak właśnie działa Android – jeśli wykryje, że urządzenie leży dłuższy czas nieruchomo z wyłączonym ekranem, wprowadza je w tryb Doze (drzemki). Aplikacje mają ograniczony dostęp do procesora oraz internetu. Wykorzystywanie zasobów odbywa się tylko w dość krótkich okresach. Działa to tak, że system powiadamia naszą aplikację o możliwości wykonania potrzebnych zadań. Na początku okresy te zdarzają się dość często, jednak im dłużej urządzenie pozostaje nieruchome, tym rzadziej okresy te występują. Spójrzcie na grafikę z oficjalnej dokumentacji Doze

Pomarańczowa pionowa kreska symbolizuje wykorzystanie zasobów urządzenia. Zagęszczenie pomarańczowych kresek to normalna praca urządzenia. Po wejściu trybu Doze widzimy, że użycie zasobów występuje tylko w ściśle określonych momentach.

Doze to nie wszystko

Założę się, że większość z nas ma jakieś aplikacje, które używa jedynie raz na jakiś czas. U mnie najlepszym tego przykładem jest aplikacja Shazam. Używam jej jedynie gdy usłyszę jakąś fajną piosenkę i po rozpoznaniu jej, natychmiast ją zamykam. Programiści Androida byli świadomi takiego zachowania użytkownika i wprowadzili App Standby. Jest to coś podobnego do Doze, ale dotyczy wyłącznie pojedynczej aplikacji. System sprawdza, które aplikacje uruchamiamy bardzo rzadko i drastycznie ogranicza im dostęp do zasobów. Ma to sens – po co przykładowo aplikacja Shazam ma łączyć się z Internetem lub przeprowadzać jakieś inne działania skoro aktualnie jej nie potrzebuję. Oczywiście App Standby, podobnie jak Doze, działa tylko, gdy urządzenie jest zasilane z baterii. W momencie, gdy podepniemy je do źródła zasilania, to aplikacje mają już bardziej swobodny dostęp do zasobów.

Co nowego w Androidzie7.0 Nougat?

W Androidzie Nougat Google niewiele zmieniło w kwestii oszczędzania baterii. Największą nowością była zmiana progu uruchomienia trybu Doze. Poprzednio, aby Doze zostało uruchomione, telefon musiał przez jakiś czas leżeć nieruchomo z wyłączonym ekranem. Jednak są sytuacje, w których nie potrzebujemy telefonu działającego w 100% możliwościa. Nawetjeśli jest on w ruchu – przykładowo, gdy jesteśmy w drodze do pracy. Od Androida 7.0 Nougat Doze zostaje uruchomione zaraz po tym jak wygasimy ekran naszego urządzenia. Nie ma tutaj znaczenia, czy urządzenie jest w ruchu czy leży nieruchomo na szafce.

Co z pozostałymi wersjami systemu?

Google nadal kładzie ogromny nacisk na usprawnienie pracy na baterii, ale już nie ma miejsca na taką rewolucję jak w przypadku Androida Marshmallow. Aktualnie zmiany odnoszą się głównie do optymalizacji samego w sobie systemu. Dodatkowo Google mocno ogranicza wykonywanie długotrwałych zadań w tle, przymuszając programistów do jak najefektywniejszego wykorzystywania zasobów systemowych.

Czy to działa?

Rozwiązania wprowadzone przez Google nie pomagają każdemu. Jeśli używasz telefonu bardzo intensywnie przez cały dzień i podłączasz go do ładowania co noc, to praktycznie nie zauważysz usprawnienia pracy baterii. Sporą poprawę odczują natychmiast ludzie, którzy używają smartfona w krótkich odstępach czasu. Tu jest właśnie siła usprawnień Androida – one nie ograniczają zużycia baterii podczas użytkowania systemu, bo to musiało by wiązać się z ograniczeniem mocy urządzenia. Usprawniają za to czas czuwania, kiedy nasz smartfon pozostaje nieużywany. Sam na pewno zauważyłeś, że zostawiając telefon na noc, bez podpiętej ładowarki poziom naładowania spadnie najwyżej o kilka procent – to właśnie zasługa programistów Androida.

Co w przypadku gdy nie chce Doze?

Mimo wielu zalet, Doze ma również swoje wady. Przykładowo możesz dostać jakieś ważne powiadomienie z opóźnieniem. Na szczęście programiści systemu Android pomyśleli o takiej sytuacji i umożliwili wyłączenie trybu Doze. W większości urządzeń nie możemy całkowicie wyłączyć tego trybu, ale możemy wyłączyć go dla wybranych aplikacji. Sposób wyłączenia tego różni się w zależności od producenta nakładki systemowej, jednak przeważnie trzeba szukać tej opcji w ustawieniach pod nazwą „optymalizacja baterii”. Jednak twórcy aplikacji są świadomi w jaki sposób działa Doze i jeśli ich aplikacja będzie wymagała wyłączenia tego trybu, na pewno Cię o to poproszą przy pierwszym uruchomieniu aplikacji.

To już wszystko, co dla Was dzisiaj przygotowałem. Dzięki, że zostaliście do końca :). Za tydzień widzimy się ponownie – opowiem Wam o całej magii, która kryje się za czymś tak prostym, jak wyświetlenie powiadomienia. Do zobaczenia!

Zapraszam również na największe w Polsce forum dla programistów Android. Jeśli macie pytania odnośnie kariery jako programista – zapraszam do działu Kariera programowanie. Zachęcam również do przejrzenia działu Praca oraz zlecenia dla programistów – być może to właśnie tam znajdziesz swoją pierwszą pracę ?

Jeśli potrzebujesz odskoczni od programowania…

…możesz zostać wykładowcą w Coders Lab i uczyć grupy ambitnych osób, które chcą rozpocząć karierę w branży IT. Dzięki temu będziesz mieć realny wpływ na edukację młodego pokolenia programistów. To także doskonały sposób na Twój własny rozwój i zwiększenie motywacji do programowania. Do wyboru masz wiele technologii, a o tym, jakie korzyści płyną z pracy jako wykładowca w Coders Lab, możesz przeczytać tutaj.

Poprzednie odcinki:

  1. Typowy dzień pracy programisty
  2. Wady pracy programisty
  3. Zalety pracy programisty
  4. [FAQ] Wszystko, co powinieneś wiedzieć jeśli interesuje Cię praca programisty
  5. Co mnie zdziwiło w programowaniu?
  6. Motywacje – w jaki sposób nie stracić zapału do programowania?
  7. Jaką firmę wybrać na początku kariery programisty?
  8. Jak wygląda rozmowa o pracę na stanowisko programisty?
  9. Jak zacząć programować?
  10. Skąd czerpać wiedzę o programowaniu?
  11. Początki programowania – jaką technologię wybrać?
  12. Cykl życia aplikacji na Androida – co to takiego?
  13. Jak tworzymy interfejs użytkownika w aplikacjach na Androida?

Motyw