Weekend z modowaniem [20.08.2011]

Mariusz Urban Android 2011-08-20

 

Witam w nowym wydaniu z cyklu „Weekend z modowaniem”. W dzisiejszym odcinku odejdziemy trochę od znanej formuły i poruszymy zagadnienie, które – mogłoby się wydawać – nie jest bezpośrednio związane z modyfikowaniem systemu, lecz jest to temat całkiem istotny, gdyż potrafi on warunkować jakość odbioru naszego urządzenia z Androidem. Przyjrzymy się dziś kwestii menadżerów zadań, przedstawimy kilka mitów z nimi związanych oraz dowiemy się co nieco na temat działania systemu.

Wśród najczęściej pobieranych aplikacji dostępnych w Markecie znajdziemy co najmniej jeden „task killer”, a ogólna ich liczba jest całkiem pokaźna. Spora część użytkowników słuchawek z zielonym systemem to byli miłośnicy Windows Mobile, gdzie programy do ubijania działających w tle zadań były wręcz niezbędne do zachowania poprawnego funkcjonowania urządzenia, gdyż przycisk zamknięcia aplikacji służył do jej minimalizowania i dalej pobierała ona potrzebne zasoby. Ci użytkownicy swoje przyzwyczajenia przenieśli na nową platformę, nie biorąc pod uwagę jej odmienności. Android wyposażony jest w zupełnie inny system zarządzania pamięcią i w większości przypadków machinalne kończenie procesów pozbawione jest większego sensu.

Głównym celem korzystania z menadżerów zadań jest uzyskiwanie jak największej ilości wolnej pamięci RAM. W teorii ma to przyspieszyć działanie systemu i poprawić nasz komfort użytkowania. Takie podejście w Androidzie jest błędne i do tego działa to dokładnie w odwrotną stronę. Po wyjściu z aplikacji zostaje ona uśpiona, by zużywać jak najmniej zasobów. Atutem wynikającym z pozostawienia jej w pamięci RAM jest możliwość błyskawicznego dostępu przy następnym uruchomieniu. W przypadku, gdy zostanie ona zamknięta na siłę, czas ponownego jej startu wydłuży się, co tylko przyprawi nas o irytację. Android sam zarządza, które z działających zadań ma najwyższy priorytet, i gdy pojawia się potrzeba zwolnienia zasobów dla nowej aktywności zamyka najmniej istotne. Sam system pobiera dla siebie odpowiednią ilość zasobów, więc dodatkowe pokłady wolnych nie są dla niego ważne. Android traktuje wolną pamięć RAM jako zmarnowaną, czemu więc z niej nie korzystać?

Dzięki pozostawieniu programu w pamięci jego elementy mogą działać poprawnie, w przypadku ingerowania w listę procesów działających w tle może się okazać, że zaburzone zostanie funkcjonowanie programów, możemy więc na przykład spóźnić się do pracy, gdy okaże się, że nasz menadżer zadań zamknął proces odpowiedzialny za budzik.

Innym celem, którym kierują się użytkownicy podczas zamykania procesów jest polepszanie czasu pracy na baterii. Winą za szybkie rozładowywanie się akumulatorów zostały obarczone procesy działające w tle. Stwierdzono, że skoro tam są, to cały czas konsumują cenną energię, więc chyba lepiej będzie je zamknąć. I w tej kwestii również możemy sobie bardziej zaszkodzić niż pomóc. Aplikacje w tle pozostają uśpione i używają jedynie zasobów pamięci RAM, której utrzymanie na poziomie 200 MB kosztuje tyle samo, co 20 MB. Wymuszenie ich zamknięcia zmusza procesor do pracy, przez co zbędnie zużywa on moc, a w większości przypadków te procesy zostaną i tak uruchomione z powrotem.

Jednak menadżery zadań potrafią okazać się przydatne, gdy są używane rozsądnie, a nie na zasadzie „zamknę wszystko, będzie lepiej”. Czynnikiem, który odpowiada zarówno za wyczerpywanie się baterii, jak i za spowolnienie pracy urządzenia jest zużycie CPU. To właśnie tym kryterium powinniśmy kierować się w selektywnym zamykaniu aplikacji. Każdy z nas zna też sytuację, gdy jakaś aplikacja działa wadliwie bądź jest na tyle obciążająca dla urządzenia, że bardzo je spowalnia – w takich wypadkach nie zaszkodzi ją ubić, gdyż nie stanowi ona zupełnej wartości dla systemu.

Wspomnieliśmy, że Android wyposażony jest we własny system zarządzania pamięcią, dzięki któremu potrafi zamykać niepotrzebne procesy i zwalniać zasoby dla nowych aktywności. Podczas startu systemu parametry systemowe ustalane są z pliku init.rc. Znajdują się w nim też informacje na temat konfiguracji lowmemorykiller, czyli wewnętrznego menadżera procesów. Są tam scharakteryzowane wartości dla różnych rodzajów procesów:

  1. obecnie działającego na ekranie,
  2. wykonującego aktywne operacje w tle,
  3. działającego w tle na wypadek, gdyby jego elementy miały być użyte przez inną aplikację,
  4. ukrytego, ale gotowego do szybkiego startu, gdyby był nagle potrzebny przez aktywną aplikację,
  5. dostawcy treści – mogą się odświeżać w danym interwale (np. automatyczne aktualizacje),
  6. puste aplikacje, z których przestaliśmy już korzystać i nie są one w żaden sposób potrzebne dla aktywnych procesów, są trzymane w RAM dla szybkiego startu, nie używają energii ani mocy obliczeniowej – to z tych aplikacji można bezpiecznie uzyskać najwięcej wolnej pamięci w razie potrzeby

Wszystkie te wartości mogą zostać skonfigurowane ręcznie, co docenią twórcy custom ROM-ów, chcący usprawnić działanie systemu bez kłopotania tym użytkownika. Plik init.rc znajdziecie w partycji boot.img, w sekcji /ramdisk.

Jednak przeciętny użytkownik także może je dostosować, nie posiadając nawet głębszej wiedzy na temat odpowiedniej wartości w ich konfiguracji. Służy do tego aplikacja AutoKiller i jest dostępna za darmo w Markecie; wymaga dostępu do praw roota. Wbrew mylącej nazwie nie służy ona do machinalnego ubijania wszystkich procesów, lecz do kontroli wewnętrznego menadżera zadań. W nim możemy ustalić, po przekroczeniu jakiego progu (podanego w MB) procesy działające w poszczególnym z trybów (wymienionych wyżej) mają zostawać kończone, zwalniając tym samym pamięć RAM.

 

 

Po pobraniu programu wystarczy z menu wybrać opcję ”predefiniowane”, a z listy zaznaczyć ustawienie „Moderate”. Powinno ono sprawdzić się na każdym urządzeniu i dzięki niemu system będzie bardziej restrykcyjny podczas automatycznego kończenia procesów o najniższym priorytecie. Przy ustaleniu zbyt wysokiego progu dla naszego urządzenia moze dojść nawet do nieoczekiwanego zamknięcia aktywnego procesu, naelży więc być ostrożnym przy korzystaniu z wysokich ustawień.

W obecnych czasach, gdy urządzenia mają ponad 512 MB wbudowanej pamięci RAM aplikacje typu „task killer” są zbędne i nieświadomemu użytkownikowi mogą bardziej zaszkodzić niż pomóc. My już wiemy, że lepiej wykorzystać domyślne funkcje systemu, niż samemu decydować o kończeniu procesów działających w tle.

To wszystko w dzisiejszym odcinku, do zobaczenia za tydzień!

Masz wątpliwości, pytania, propozycje? Pisz śmiało na [email protected] – postaram się, by żadna wiadomość nie pozostała bez odpowiedzi.

 

 






Przewiń stronę, by przeczytać kolejny wpis
x