Android: cos'è una Sticky Broadcast?
Una sticky broadcast è uno strumento per la comunicazione tra app Android. Il sistema operativo Android tratta normalmente ogni applicazione come un utente separato; i programmi girano in modo indipendente e isolato, su macchine virtuali separate, usando solo i componenti del telefono necessari. Questo garantisce sicurezza stretta, ma talvolta le app devono condividere informazioni. Le sticky broadcast sono una soluzione.
Broadcast
I broadcast sono annunci inviati alle app Android. Quando la batteria si scarica o lo schermo si spegne, ad esempio, un annuncio va a tutte le applicazioni. Il sistema operativo del telefono avvia la maggior parte dei broadcast, ma anche singole app possono farlo. Se un'app riceve dati disponibili ad altre applicazioni, le contatterà e informerà. Perché l'annuncio raggiunga le app, deve prima andare a un broadcast receiver, un componente dell'applicazione che gestisce i messaggi, solitamente senza notificare l'utente.
Intent
A causa della separazione che Android impone tra le sue varie app, un'app non può contattare direttamente il broadcast receiver di un'altra app. Invece, l'app notifica il telefono Android con un Intent. Un Intent è un messaggio per attivare un'app o uno dei suoi componenti, come il receiver. L'Intent definisce semplicemente il messaggio che sta per essere trasmesso — ad esempio, che la batteria è scarica, o per richiedere l'accesso a una foto sul telefono.
Sticky Broadcast
Un broadcast normale raggiunge il receiver a cui è destinato, poi termina. Una sticky broadcast rimane in esistenza per poter notificare altre app se necessitano della stessa informazione — ad esempio, che la batteria è ora completamente carica. Quando si registra una nuova app che ha bisogno di quell'informazione, o un'app inattiva si attiva, la sticky broadcast comunicherà con il receiver. Una successiva sticky broadcast con nuove informazioni sullo stesso argomento riscriverà una precedente sticky broadcast.
Considerazioni
Un'app può inviare o rimuovere una sticky broadcast solo se la sua programmazione include un permesso che autorizza le sticky. La sicurezza sulle sticky broadcast non è stretta come sui messaggi non sticky. Uno dei vantaggi dell'uso di un intent, sticky o no, è che si può specificare quali app debbano riceverlo, ma non è obbligatorio. Android determina le app giuste per ricevere il broadcast, basandosi sul filtraggio integrato in ogni app dal suo programmatore.