Zasto se onda ljudi zale sto im pozadinske aplikacije ubijaju bateriju?
Nisam gledao kod Androida, ali kontam da su procesi zablokirani na nekom semaforu (ili nekoj strukturi slicne primene). Ako su zablokirani, zasto se onda bude ( => uposljavaju CPU => trose bateriju)?
Pa to sam napisao u delu posta koji nisi uključio u citat, ali pojasniću bolje. U suštini, to se dešava kada je aplikacija loše napisana. Glavni uzrok "srkanja" baterije je nepravilno i bahato korišćenje resursa što je na Androidu vrlo lako zloupotrebiti i što lenji developeri često rade.
Konkretan krivac u velikom broju slučajeva je takozvani "wakelock". Programer može da zatraži wakelock od sistema, što u suštini znači "nemoj da ubijaš moju aplikaciju, radim nešto bitno". Programer je zatim dužan da kaže sistemu da je završio sa ovom važnom operacijom i otpusti (release) wakelock. Ako programer zaboravi da otpusti wakelock, sistem nikada neće ubiti aplikaciju i ona će neprestano raditi što znači da sistem neće moći da "spava" (sleep mode - neka vrsta hibernacije koja mnogo utiče na štednju baterije - za samo par sati može da se desi da nestane 50% baterije ako neka aplikacija konstantno ima wakelock).
Ovo se uklapa u priču o principu rada Androida jer kao što sam napisao u prethodnom postu, Android nastoji da potrpa što više aplikacija u RAM da bi se one brže pokrenule. Ovo zahteva mehanizam koji će omogućiti aplikacijama da rade važne poslove bez bojazni da će ih sistem ubiti. Za sada, wakelock predstavlja rešenje.
E sad, ovo nije najsrećnije rešenje čak je i problematično jer se trenutno od developera očekuje da budu pažljivi i ne budu bahati sa wakelock-ovima. Jednostavno, mnogo je lako "*****ati se" i zato mnogo loše napisanih aplikacija ima ovaj problem.
Anyway, problem se već rešava - u novijim verzijama androida za neke stvari postoje novi mehanizmi koji zamenjuju wakelock, kao što je window manager koji vodi računa o wakelockovima za tebe i tako dalje ali pitanje je da li si uopšte želeo da čitaš gomilu tehničkih detalja tako da ću prestati da smaram

Poenta je da Google uglavnom zna šta radi i iako još uvek ima smisla koristiti task killere i sl. u određenim slučajevima, oni će sve manje biti potrebni kako se Android bude razvijao.