Qual è la differenza tra un servizio e un ricevitore broadcast?


14

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?


Sai invece di creare porte sul livello TCP creiamo sempre ricevitori di trasmissione per risparmiare la batteria e molta elaborazione .. Quando si verifica un evento in Android .... la trasmissione viene inviata all'interno del telefono a tutte le app .. E se tu hanno scritto il ricevitore di trasmissione per quell'evento ,, verrà chiamato automaticamente. Tecnicamente l'evento accaduto si chiama intento in termini di androide
Rahul Raina,

Risposte:


27

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:-

  • Un'attività rappresenta una finestra sullo schermo; un servizio esegue un'attività in background possibilmente di lunga durata; un ricevitore broadcast viene eseguito per un breve periodo, per gestire un evento.
  • Tutti e tre vengono avviati utilizzando gli intenti, ma utilizzando un meccanismo diverso. L'app di avvio deve indicare esplicitamente quale tipo di componente avviare (chiamando in ogni caso un metodo diverso).
  • Quando un'app avvia un'attività utilizzando un intento, avvia solo un'attività (eventualmente mostrando la finestra di dialogo "Completa l'azione utilizzando ..." per consentire di scegliere quale), e lo stesso vale per i servizi, ma la trasmissione di un intento può avviare diverse trasmissioni ricevitori, possibilmente da diverse app.
  • Come utente, interagisci direttamente con le attività; non interagisci con i servizi, ma possono rallentare il telefono e consumare risorse; non interagisci con i ricevitori broadcast e, poiché hanno vita breve, non devi preoccuparti di gestirli.

Una risposta molto utile Voglio solo confermare qualcosa: cosa succede alle app disabilitate dagli utenti? Android ha mai avviato il proprio ricevitore di trasmissione per gli scopi per cui sono registrati? O quelle app disabilitate possono eseguire il loro servizio in background? Perché il pulsante Force-Stop non è disattivato per le app disabilitate anche dopo il riavvio? Mi è chiaro che le loro attività non possono essere avviate.
Firelord

@Firelord Se hai una nuova domanda, dovresti pubblicarla come nuova domanda. I commenti non consentono risposte approfondite e non rendono la tua domanda rintracciabile per altri visitatori.
Dan Hulme,

ottimo post, ma in realtà ci sono quattro componenti. Mancano i provider di contenuti.
Alexandre Martin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.