Task killer – quanto è utile?

21 marzo 201159 commenti

Si è più volte parlato di questo argomento sui forum, molti sono gli avvocati del Diavolo pro e contro i famosi task killer, ma pochi sanno a cosa in realtà possono (se mai) servire queste applicazioni. Andavano molto di moda nelle ormai vecchie versioni di Android 1.5 e 1.6 perché il sistema rallentava se molte applicazioni erano aperte, ma il nostro amato OS è ormai cambiato radicalmente e quindi ci si deve chiedere se questi assassini, a volte anche pagati, siano ancora utili o meno.

Esistono ormai sul market almeno una ventina di task killer più o meno famosi, alcune ROM ne implementano uno direttamente (ad esempio la famosa CyanogenMod), Android stesso permette all’utente di terminare una data applicazione (dal menu delle impostazioni delle applicazioni), ma le persone sono ancora avvezze al vecchio sistema, oppure sono accomunate dall’ignoranza su come Android gestisca processore e memoria centrale, e sono sempre tentate di fare “tabula rasa“.

Per capire quindi cosa faccia un Task Killer bisogna prima comprendere, almeno a spanne, quale sia il ciclo vitale di un’applicazione in ambiente Android:

  • Avvio
  • Esecuzione in foreground (quando si usa l’applicazione)
  • Esecuzione in background (quando si usa un’altra applicazione o si spegne lo schermo) ed eventuali servizi.

Ovviamente il ciclo è nettamente più complesso ed articolato, ma sempre parlando a spanne questi sono le tre condizioni principali nelle quali l’applicazione può girare.

Al momento dell’avvio l’applicazione viene caricata dal disco fisso alla RAM nel caso non sia già presente. Durante questa fase Android si occupa inoltre di far cominciare l’applicazione a tutti gli effetti, dedicando parte del processore per elaborare dati, interfaccia grafica e così via e cominciando così la seconda fase, ossia l’esecuzione in foreground.

L’applicazione viene quindi eseguita in foreground ed utilizza le risorse così come lo sviluppatore ha deciso (ad esempio connessioni ad internet, interpolazione dati, triangolazione di segnale GPS, creazione immagini, modelli 3D e così via). Questa è la fase principale del programma e come ci si aspetterebbe è il momento in cui interagisce con RAM, CPU ed i sensori, e quindi può influenzare in modo sensibile la durata della batteria.

Quando l’utente decide di smettere di utilizzare la data applicazione, questa non viene chiusa, ma viene messa in uno stato di ibernazione, dove l’applicazione non cambia il suo stato, non interagisce con la CPU né con altre componenti hardware, semplicemente occupa uno spazio in RAM. Poche persone sanno che la RAM non spreca energia, in quanto ogni bit in essa contenuto non è acceso o spento (0 o 1), semplicemente ha una tensione differente. Ciò vuol dire che se un’applicazione risiede in RAM per quest’ultima è come se non esistesse, semplicemente quell’area non è utilizzabile per caricare dati di altre applicazioni. Se non fosse per il costo in calore (che rimane pur sempre energia), i computer sarebbero a costo energetico zero (a parte l’energia necessaria per accendere ogni singolo componente al momento dell’avvio).

Eccezione all’ultimo paragrafo sono i programmi dotati di servizi. Questi speciali oggetti altro non sono che porzioni di codice scritti appositamente per girare indipendentemente dallo stato dell’applicazione. Sono progettati in modo che sia il programmatore a decidere quando ibernare e quando far riprendere il servizio, ad esempio un programma potrebbe aver bisogno di caricare un’immagine online: se l’utente chiudesse l’applicazione, il servizio si preoccuperebbe di finire il lavoro. Se non esistessero i servizi dunque non si potrebbe ascoltare la musica mentre si visualizza il web, non si potrebbe controllare la posta giocando a solitario.

Sta all’utente quindi decidere quali applicazioni installare ed avviare, mentre è compito di Android permettere a tutte le applicazioni di essere avviate senza problemi. Per questo il sistema operativo provvede in maniera completamente autonoma di chiudere le applicazioni aperte non utilizzate di recente, precisamente in quest’ordine:

  • Applicazioni senza servizi
  • Applicazioni con servizi
  • Servizi

Per esempio se una persona ha aperto QuickOffice, Twitter, Facebook, Email, Gmail, YouTube, Galleria in quest’ordine ed ha la memoria satura di applicazioni e vuole giocare a Need For Speed (un gioco che richiede una grande quantità di memoria), Android andrà a chiudere prima QuickOffice, poi YouTube, Galleria e, se le risorse dovessero ancora mancare, Twitter, Facebook, Email, Gmail (questi ultimi dotati di servizi di sincronizzazione dati).

Inoltre Android è in grado di riconoscere le applicazioni che sono andate in crash, che non rispondono ai segnali del sistema operativo (ANR), applicazioni in cicli infiniti ed è in grado di terminarle da solo.

È proprio qui che vengono chiamati in gioco i Task Killer: queste applicazioni chiudono e rimuovono gli altri programmi dalla RAM, ossia agiscono al posto del sistema operativo. Ogni volta che i Task Killer agiscono, cambiano lo stato interno della RAM e questo ha un costo in calore (e non smetterò mai di dire che il calore è energia sprecata), diminuendo l’autonomia della batteria. Se poi si impostano per ripulire periodicamente la RAM è ancora peggio: non solo occupano il processore per individuare e dare il comando di terminazione, ma stressano la RAM a continui cambi di stato, ossia calore su calore.

Allora i task killer sono inutili? Io sono di questa opinione, ma possono ancora essere usati per uno scopo (se proprio non si vuole usare l’App Manager di Android): raramente, e personalmente non mi è ancora capitato, alcune applicazioni che normalmente si utilizzano solo in foreground, hanno dei servizi di geolocalizzazione, oppure usano intensamente internet per mostrare gli ultimi dati appena l’utente decida di tornare ad utilizzare le stesse. Queste applicazioni sono progettate con i piedi e non tengono conto della batteria limitata dei nostri dispositivi.

La cosa giusta da fare sarebbe rimuovere tali applicazioni dal sistema ed avvisare lo sviluppatore dei problemi riscontrati. Se invece si vuole continuare ad utilizzare queste applicazioni perché indispensabili, si può decidere di installare un Task Killer e impostarlo per uccidere selettivamente solo la data applicazione quando lavora in background. Questo quindi è l’unico motivo per i quali i task killer possano ad oggi essere ancora utilizzati. Ogni altro utilizzo è non solo inutile, ma addirittura nocivo al sistema.

Loading...