Ho letto con gusto quell'articolo, molto interessante effettivamente, grazie!
Pero' lasciami dire che ci sono varie considerazioni che sono comuni a vari sistemi operativi e relative applicazioni. Faccio un breve paragone con quanto conosco (programmo da quasi 20 anni, soprattutto in ambiente Microsoft ovviamente ma anche a suo tempo sotto Linux in C, ad esempio).
Soprattutto quando dice che "un'applicazione anche se risulta 'running' non e' detto che stia girando" dice una cosa corretta. Ma lo e' anche su windows se e' per questo! Tanto per fare un parallelo con cose che molti probabilmente conoscono, ossia i concetti legati alla programmazione in Visual Basic.
Allora, partiamo dal concetto della memoria e CPU: io posso avere una form (diciamo la finestra del mio programma) non caricata (unloaded) quindi non occupa spazio in memoria di lavoro e non impiega CPU. Oppure una form caricata e in esecuzione, quindi occupa spazio e CPU. Oppure una form caricata (loaded) ma che non sta facendo nulla. Anche questo esiste sotto Android, mi pare di capire, e quest'ultimo stato e' quello che ha generato secondo me la confusione in molti! Su un telefono, che ha risorse limitate sia di memoria sia di CPU, posso avere anche qui programmi NON caricati, oppure caricati e che stanno facendo qualcosa, oppure caricati ma che non stanno facendo nulla (quindi "congelato" come direste...), ed il passaggio da uno stato all'altro e' qui molto piu' critico su uno smartphone che non su un PC con giga di RAM e CPU potenti.
L'altro aspetto che bisogna tenere in considerazione, soprattutto sul passaggio da uno stato ad un altro di quei 3, e' la gestione degli eventi. Oltre ad essere una questione alla base della programmazione ad oggetti, se vogliamo, determina anche quando un programma e' "caricato" ma "non sta facendo nulla" ma semplicemente perche' e' in attesa di un certo evento! Potrebbe essere un timer, una connessione di rete, lo svuotamento di un buffer, o la fine della riproduzione di un file audio, oppure attende che l'utente prema un pulsante, o che dia nuovamente il cosiddetto "focus" all'applicazione per iniziare ad interagire dopo aver selezionato un'altra applicazione.
Un'applicazione "ben fatta" (soprattutto in ambiente smartphone, come detto) ovviamente non si mette a fare cicli infiniti in attesa di un evento, perche' questi cicli comunque usano CPU e quindi consumano batteria (e sappiamo che ci sono alcune app magari carine ma "fatte male" che fanno alzare il consumo, no?...).
Per cui dire che l'applicazione e' "congelata" e quindi NON c'e' una gestione del multitasking semplicemente perche' e' in background (non ha il "focus") o perche' in attesa di un input o altro evento che, tramite il sistema operativo, la faccia intervenire, e' SBAGLIATO. E ancora piu' sbagliato e' affermare che Android non sia multitask per quelle ragioni.
Comunque e' sempre interessante confrontarsi, e trovare persone disposte a questo, e' stimolante, e permette a tutti di prendere qualcosa di buono dagli altri, IMHO.