Funzionamento base
Android è un sistema operativo che comprende un ambiente di esecuzione, servizi, librerie e applicazioni; gli elementi fondamentali sono:
- linux kernel – fornisce livelli di astrazione tra l’hardware dei dispositivi e i livelli superiori dell’architettura;
- android runtime – fornisce un processo di compilazione AOT (Ahead-Of-Time) per tradurre il bytecode DEX in un formato eseguibile sul dispositivo ELF (Executable and Linkable Format);
- librerie – librerie java specifiche per android;
- application framework – sistema di servizi in cui le applicazioni android vengono eseguite;
- applicazioni – sia quelle native della versione di android in uso sul dispositivo che quelle di terze parti;
Le componenti base di ogni applicazione android sono:
- activity – è un’interfaccia utente;
- service – un’operazione svolta in background senza l’intervento dell’utente;
- content provider – permettono di condividere dati tra le applicazioni;
- broadcast receiver – componente che reagisce ad un invio di messaggi a livello di sistema;
- intent – ogni componente può attivarne un’altra mediante invocazione di sistema;
Per un sistema mobile la corretta gestione delle risorse è un fattore importante, da considerare che un dispositivo mobile può restare sempre acceso e quindi salta la fase della liberazione della memoria e la pulizia di risorse temporaneamente assegnate. Android cerca di tenere in vita ogni processo il più a lungo possibile, ad ogni processo viene dato un livello d’importanza quindi quelli con livello minore hanno una probabilità alta che vengano arrestati.
Processi in ordine d’importanza:
- foreground – interagiscono direttamente o indirettamente con l’utente, applicazioni che contengono l’activity attualmente utilizzata o i service ad esse collegati;
- visibili – activity visibili e service ad esse collegati;
- service – svolgono lavori molto utili all’utente anche se non direttamente collegati a ciò che l’utente vede nel display;
- background – activity non più visibili, applicazioni che l’utente ha usato e messo da parte;
- empty – vuoti e senza nessuna attività, conservati nella cache per una veloce riattivazione;
Durante la sua esecuzione un’activity si può trovare in uno dei seguenti stati:
- active/running – è in cima all’activity stack, è visibile sullo schermo e sta interagendo con l’utente;
- paused – visibile ma non sta interagendo con l’utente perché oscurata da altre activity;
- stopped – non visibile all’utente;
- killed – terminata e non più presente nell’activity stack;
Gli eventi che governano il ciclo di vite di un’activity:
- onCreate – quando viene creata;
- onStart – quando diviene visibile;
- onResume – quando interagisce con l’utente;
- onPause – quando viene messa in pausa;
- onStop – quando non più visibile;
- onDestroy – prima che l’activity viene distrutta dal sistema;
- onRestart – quando viene arrestata e riavviata;