Continuo a sentir parlare di servizi e ricevitori di trasmissioni . Qual è la differenza tra loro e in che modo influenzano il funzionamento del mio telefono Android dal mio punto di vista?
Continuo a sentir parlare di servizi e ricevitori di trasmissioni . Qual è la differenza tra loro e in che modo influenzano il funzionamento del mio telefono Android dal mio punto di vista?
Risposte:
Le applicazioni Android hanno tre tipi di componenti. In generale, gli utenti non devono conoscerli: sono un modo per gli autori di app di programmare comportamenti particolari nelle loro app. Ma se stai osservando attentamente il comportamento delle tue app, ad esempio con un task manager, o se stai automatizzando le cose con un'app come Tasker, è utile capire come si adattano insieme nel sistema.
Un'attività è il tipo più familiare di componenti: si tratta di una finestra si può vedere: o pieno schermo o una finestra di dimensioni. Un'attività viene eseguita solo mentre è visualizzata sullo schermo. Dopo aver lasciato l'attività, Android manterrà l'app in memoria pronta per essere riavviata, ma l'attività non verrà eseguita, il che significa che non utilizzerà la batteria o la rete. Un'app avvia un'attività utilizzando un intento . L'intento può specificare esplicitamente quale attività avviare, oppure può specificare un'azione da eseguire (come l'apertura di un determinato file). Se più attività possono "gestire" l'intento, viene visualizzata la finestra di dialogo che richiede di sceglierne una.
Un servizio è un altro componente dell'applicazione. Una volta che un altro componente (forse un'attività o un altro servizio) ha avviato un servizio, viene eseguito in background fino a quando non si arresta automaticamente. Ciò significa che un servizio potrebbe mantenere sveglio il telefono (utilizzando un blocco sveglia ), scaricando la batteria o utilizzando molti dati di rete, senza che nulla venga visualizzato sullo schermo.
Le app possono utilizzare i servizi per eseguire processi di lunga durata in background, come il download di file da un server o il controllo della posta elettronica o la posizione dell'utente. Sebbene i servizi non vengano visualizzati o interagiscano direttamente con te, vengono comunque visualizzati nell'elenco "Esecuzione di app". Dall'app Impostazioni , seleziona App o Gestione applicazioni , quindi Esegui . È possibile interrompere un servizio in questo modo, ma di solito non è necessario. Poiché i servizi non sono direttamente visibili, Android li considera meno importanti delle attività, quindi saranno i primi a essere uccisi quando il telefono avrà bisogno di più memoria.
I ricevitori di radiodiffusione sono il terzo tipo di componente. Come i servizi, esistono solo in background e non interagiscono direttamente con te. Ma a differenza dei servizi, non possono rimanere in esecuzione o svolgere compiti lunghi: esistono per rispondere agli eventi. A differenza di attività e servizi, è possibile avviare più di un ricevitore di trasmissione in una volta sola.
Un componente trasmette un intento, possibilmente a un'app, ma più spesso senza specificare un'app specifica. In questo caso, l'intento di solito rappresenta un evento che si è verificato, come la batteria quasi scarica. Il sistema trova tutti i ricevitori di trasmissione che hanno registrato un interesse (utilizzando un filtro intento ) e li esegue ciascuno a turno. Ogni destinatario della trasmissione può reagire immediatamente, ad esempio creando una notifica, oppure può avviare un servizio o un'attività per intraprendere ulteriori azioni. Non appena il destinatario della trasmissione ha gestito l'evento, questo viene arrestato e non si ripeterà fino a quando non verrà trasmesso un altro evento simile.
Un esempio di tutti e tre i componenti che lavorano insieme è quando scarichi un'app da Google Play. Innanzitutto, l'attività di Google Play fornisce l'interfaccia visiva per la scelta del contenuto da scaricare. L'elenco delle app potrebbe essere un'attività; facendo clic sul pulsante "Installa" si avvia un'altra attività per mostrare la finestra di dialogo di conferma o pagamento. Quando si conferma, l'attività di dialogo avvia un servizio. Il servizio continuerà a scaricare il contenuto anche quando l'attività è terminata e non è più in esecuzione.
Ma forse il telefono perde la connessione a Internet durante il download della nuova app. In tal caso, il servizio di download di Google Play registrerà un ricevitore di trasmissione, con un filtro intento per dire che è interessato alle modifiche alla connettività di rete, quindi il servizio si fermerà da solo. Quando il telefono si connette a Internet, il sistema trasmette un evento. Android avvierà il ricevitore di trasmissione registrato dal servizio Google Play, insieme a qualsiasi altro ricevitore di trasmissione in attesa di quell'evento. In questo caso, il destinatario della trasmissione avvierà nuovamente il servizio di download. Il servizio creerà notifiche man mano che il download procede e, al termine, invierà la propria trasmissione per informare altre app che il nuovo pacchetto è stato installato e quindi si interromperà automaticamente. A sua volta, questo avvierà i ricevitori di trasmissione da altre app,
In sintesi:-