vuoi
o PayPal
tutte le volte che vuoi
Permessi e approvazione nell'Android Manifest
Una applicazione per poter usufruire di una certa funzionalità o di una risorsa deve richiedere un permesso per poterla utilizzare. I permessi si dividono in Predefiniti, ovvero permessi standard di Android, e permessi Custom, ovvero permessi specifici per la singola app e definiti nell'Android Manifest. Sempre nel manifest, oltre a dichiarare i permessi, lo sviluppatore richiede anche l'approvazione di questi ultimi, cosa che può essere fatta dal sistema o tipicamente tramite una richiesta all'utente che approva l'accesso dell'applicazione a una certa risorsa del device.
Politiche di risparmio energetico di Android
Per il risparmio energetico, Android utilizza in particolare due strumenti: il lower killer memory e i wakelocks. Il lower killer memory è una politica basata sulla stima del ritardo che ogni task accumula a causa di mancanza di memoria.
quindi dal calcolo della pressione detta vmpressure che il sistema presenta in un certo momento. La stima di questi dati permette al sistema di decidere quali task killare per ridurre la pressione. La seconda policy di gestione dell'energia si basa sulla richiesta da parte delle applicazioni di wakelocks su determinate risorse. Questa richiesta deve essere fatta esplicitamente e in sua assenza Android revoca la risorsa all'applicazione.- Elencare e descrivere brevemente il ciclo di vita di una activity
funzione onPause()
. Da questo momento l'activity può essere restartata chiamando la funzione onRestart()
e tornare a onStart()
, oppure l'intera applicazione può essere killata, oppure l'activity può essere stoppata con la funzione onStop()
e poi essere distrutta con la funzione onDestroy()
, oppure reinizializzata con onRestart()
.
Descrivere le tipologie di intent previste da Android
Un intent è un oggetto generico utilizzato per la comunicazione tra app. Esso è sostanzialmente un'azione accompagnata da dei dati utili per lo svolgimento della stessa. Un intent può essere esplicito o implicito. È esplicito se, oltre all'azione e ai dati, l'intent è accompagnato anche dall'applicazione che lo andrà a risolvere. È invece implicito se l'intent è generico e non specifica nessuna applicazione in particolare. A quel punto, il sistema sceglie come risolvere l'azione scegliendo una.
applicazione in grado di soddisfare la richiesta. • Descrivere sinteticamente il funzionamento del Broadcast Receiver Il Broadcast Receiver è un componente passivo di un'app che rimane in ascolto di eventi provenienti dal sistema o da altre applicazioni. Quando un evento si verifica, il Broadcast Receiver avvia una certa operazione per rispondere a tale evento. Il Broadcast Receiver è attivo anche quando l'applicazione non è in esecuzione. • Descrivere l'utilità dei tagcomunicazione tra processi. È situato nel kernel space e si occupa autonomamente di allocare e deallocare oggetti tramite reference counting, permette una comunicazione sincrona e ad ogni processo è assegnato un pool di thread per la gestione della comunicazione.
- Elencare e descrivere i metodi utilizzati nei Service android
- onCreate(): chiamato quando il servizio viene allocato in memoria
- onDestroy(): distrugge/termina il service
- onStartCommand(): chiamato quando il service deve compiere una operazione in background
- onBind(): chiamato quando è necessario mettere in comunicazione un servizio con una applicazione che lo ha richiesto
- Descrivere il funzionamento del content provider e indicare la struttura dell'URI
Il content provider è un componente delle applicazioni android che permette alle applicazioni di condividere tra loro dei dati. L'accesso ai dati avviene come in un database relazionale mediante dei cursori che possono scorrere attraverso
Le varie istanze. I metodi principali del content provider sono:
- onCreate() che inizializza il content provider
- insert(), update(), delete() che permettono di inserire, aggiornare ed eliminare delle istanze
- query() restituisce il risultato di una query posta in ingresso
I content provider sono identificati da un URI composto da 4 sezioni: protocollo, package del content provider, tabella, identificativo dell'istanza.
Spiegare sinteticamente il block erasing e il memory wearing
Il block erasing si riferisce ad operazioni svolte sulle memore flash utilizzate nei dispositivi che funzionano mediante android. In particolare ogni qual volta un blocco di memoria deve essere scritto, tutti i dati devono essere prima cancellati esplicitamente in quanto non è possibile la sovrascrittura e questo determina un dispendio di tempo per cui viene effettuato durante i periodi di idle.
Il memory wearing invece si basa sull'utilizzo limitato delle celle della memoria, ovvero ogni cella può
Essere scritta e quindi utilizzata un numero limitato di volte, in questo modo si evita il deterioramento di determinate zone di memoria e l'utilizzo omogeneo di tutta la memoria.
Cosa si intende per Visible Lifetime e Foreground Lifetime
Il foreground Lifetime è il tempo in cui una activity android è visibile sullo schermo del dispositivo. Questo periodo va dalla chiamata del metodo onResume() fino alla chiamata del metodo onPause().
Il visible lifetime invece è il tempo per cui una activity è in memoria anche se non visibile in foreground e questo periodo va dalla chiamata del metodo onStart() fino a onStop()
Indicare le differenze tra activity e service
Activity e services sono entrambe due componenti delle applicazioni android tuttavia una activity rappresenta una schermata con cui l'utente può interagire e dotata quindi di interfaccia grafica. Un service invece è una componente priva di interfaccia grafica e che non è
mai visibile all'utente poiché un service lavora sempre in foreground e si occupa appunto di offrire un servizio all'applicazione.- Metodo di salvataggio dei dati delle applicazioni Android:
- Preferenze: bundle usati per contenere dati, memorizza singole variabili all'interno di un array associativo il cui accesso è possibile mediante metodi come getPreferences() (preferenze delle activity), getSharedPreferences() (preferenze dell'applicazione) e getDefaultSharedPreferences() (preferenze di Android).
- Storage interno: memoria interna del dispositivo.
- SQLite: database relazionale accessibile mediante content provider.
- Network Connection: salvataggio dei dati in rete.
- Descrivere in modo schematico le principali funzioni del componente BSD del kernel XNU:
Il componente BSD del kernel XNU rappresenta la parte monolitica del kernel ibrido di iOS, esso si occupa della protezione della memoria e del Virtual File System.
avviato il Bootloader di alto livello che controlla l'integrità del kernel che viene quindi caricato e lanciato.Descrivere la Secure Boot Chain
La Secure Boot Chain rappresenta il processo di avvio del sistema operativo iOS. Si basa su una catena della fiducia in cui ogni step dell'avvio si occupa di validare e controllare l'integrità dello stato successivo in modo da mantenere in sicurezza tutto il processo.
La prima fase è la BootROM contenuta nella SecureROm. La BootRom contiene i primi comandi di avvio del sistema ed ha la fiducia implicita del sistema in quanto il codice è scritto direttamente in fase di produzione su una memoria di sola scrittura. Contiene la rootCA Key di Apple che serve per validare gli step successivi. Successivamente viene avviata la LLB (lower level bootloader) che è uno step di setup opzionale che si occupa di verificare l'integrità dello step successivo.
Successivamente viene
- Descrivere Cocoa MVC e indicare le differenze con MVC tradizionale
Cocoa MVC rappresenta l'architettura di una applicazione iOS.
M = Model è una componente delle app che si occupa di contenere i dati e la logica che manipola i dati
V = View è un rettangolo animato renderizzato dal Media Layer che si occupa dell'interfaccia grafica e dell'interazione con l'utente. La classe principale è UIView con alcune sottoclassi come UIButton o UILabel che forniscono pulsanti o caselle di testo.
C = Controller rappresenta il collegamento tra model e view, si occupa di rispondere alle azioni eseguite dall'utente sulla view aggiornandole e utilizzando i dati provenienti dal model
La differenza tra Cocoa MVC e MVC tradizionale sta nel fatto che in MVC tradizionale model e view sono strettamente collegate tra loro quindi è
impossibile il riutilizzo di view. In cocoa MVC il collegamento tra view e model è mediato dal controller che si interponetra di essi determinando un disaccoppiamento.- Descrivere i meccanisimi di protezione del kernel adottato da iOS
- Write XOR Execute: le pagine in memoria possono essere esclusivamente o write o execute
- Kernel Adress Space Layout Randomization: il kernel viene caricato in memoria ad indirizzi sempre casuali.
- Kernel Patch Protection: viene effettuato un check hardware e software per la verifica dell'integrità
- Pointer Autentication: i puntatori a celle di memoria sensibili sono crittografati
- Descrivere il file system di iOS