Bentornati.
In questo video, approfondiremo i servizi e le loro tipologie.
Un servizio è un tipo di componente Android che viene eseguito in background indipendentemente dall'interfaccia utente.
È stato progettato per attività che non richiedono l'interazione diretta dell'utente, ma che devono eseguire alcune operazioni
per un periodo prolungato.
I servizi sono comunemente utilizzati per gestire attività come la musica di sottofondo, la riproduzione, le operazioni di rete, l'elaborazione
dei dati e altro ancora.
In Android esistono tre tipi di servizi: in primo piano, in background e vincolati.
I servizi in primo piano sono visibili all'utente e vengono utilizzati per attività che richiedono un'interazione
o una notifica continua.
Visualizzano una notifica persistente nella barra delle notifiche per informare l'utente che il servizio è in esecuzione.
Ad esempio, un'applicazione di riproduzione musicale utilizza un servizio in primo piano per riprodurre la musica, anche quando l'applicazione non
è in primo piano.
La notifica potrebbe mostrare il brano corrente, fornire controlli di riproduzione e consentire all'utente di interagire
con la musica.
I servizi in background eseguono attività che non sono direttamente visibili all'utente e non richiedono una notifica
continua.
Sono più adatti per attività che possono essere eseguite silenziosamente senza richiedere l'attenzione costante dell'utente.
Ad esempio, un'applicazione che sincronizza periodicamente i dati con un server potrebbe utilizzare un servizio in background per eseguire
queste operazioni di sincronizzazione a intervalli specifici, mentre i servizi vincolati in Android consentono ai componenti
dell'applicazione, come le attività, di vincolarsi ad essi, i servizi vincolati eseguono i loro compiti finché un
qualsiasi componente dell'applicazione è vincolato ad esso.
Per associare un componente dell'applicazione a un servizio,
in Android si utilizza il metodo bind Service.
I servizi hanno un ciclo di vita che ne definisce la creazione, il funzionamento e la distruzione.
Esistono due tipi di servizi: quelli vincolati e quelli non vincolati.
Analizziamo il ciclo di vita di entrambi i tipi di servizi.
Iniziamo con il servizio Unbound.
I servizi non vincolati vengono avviati con il metodo Start service e funzionano indipendentemente dai componenti che
li hanno avviati.
Possono continuare a funzionare anche se il componente che li ha avviati.
Ad esempio, un'attività viene distrutta.
Quindi viene richiamato il metodo Oncreate.
Questo metodo viene richiamato quando il servizio viene creato inizialmente.
Viene utilizzato per le attività di inizializzazione una tantum.
Il metodo di comando Onstart.
Questo metodo viene richiamato all'avvio del servizio.
Utilizzando il metodo Start service, fornisce il percorso intent al metodo Start service e altri parametri.
Si eseguono attività in background.
In questo metodo si possono restituire valori come start sticky o start not sticky per indicare come il sistema deve
gestire il servizio.
Se viene ucciso a causa dei vincoli di risorse, il servizio viene fermato da sé o da un client e il servizio viene
interrotto.
Quindi nessun callback del metodo Ondestroy.
Questo metodo viene richiamato quando il servizio sta per essere distrutto.
Dovete liberare le risorse acquisite ed eseguire le operazioni di pulizia.
Il secondo tipo di servizi è quello dei servizi vincolati.
I servizi vincolati sono solitamente utilizzati per stabilire una connessione tra i componenti, le attività e il servizio.
Vengono avviati utilizzando il metodo di servizio Bind e sono strettamente legati ai componenti che li vincolano.
Quando tutti i componenti si scollegano dal servizio, quest'ultimo viene automaticamente distrutto.
Il metodo Oncreate come nei servizi non vincolati.
Questo metodo viene richiamato quando il servizio viene creato inizialmente.
Il metodo unbind e il metodo bind vengono richiamati quando un componente si lega al servizio.
Utilizzando il metodo del servizio online, restituisce un'interfaccia eye binder che il componente client può utilizzare per
interagire con il servizio.
Il servizio può eseguire, impostare e fornire al cliente questo raccoglitore.
Ciò consente al client di interagire con il servizio e con tutti i client e di effettuare il bind chiamando unbind.
Il metodo del servizio su unbind viene richiamato quando tutti i componenti si sono svincolati dal servizio.
Si può restituire qui se si vuole che il servizio continui a funzionare anche se non ci sono più componenti
vincolati, ma in genere restituire false porta alla distruzione del servizio quando viene svincolato dal metodo
rebind.
Questo metodo viene richiamato quando un componente già vincolato al servizio si rilega utilizzando il metodo
bind service e il metodo Ondestroy, simile a quello dei servizi non vincolati.
Questo metodo viene richiamato quando il servizio sta per essere distrutto.
Eseguire qui le operazioni di pulizia.
In sintesi, i servizi non vincolati possono essere eseguiti indipendentemente dai componenti e continuare a funzionare anche se il componente
di partenza viene distrutto.
I servizi vincolati sono più strettamente collegati ai componenti che si legano ad essi.
Vengono distrutti automaticamente quando tutti i componenti vincolati si svincolano da essi.
Siate prudenti nel gestire correttamente il ciclo di vita del servizio.
Se non viene gestita correttamente, può causare perdite di risorse o comportamenti indesiderati nell'applicazione.
E ricordate che il caso d'uso specifico per ogni tipo di servizio determinerà se utilizzare servizi vincolati
o non vincolati e come gestire il loro ciclo di vita.