WEBVTT

00:00.200 --> 00:01.330
Bentornati.

00:01.340 --> 00:05.660
In questo video, approfondiremo i servizi e le loro tipologie.

00:05.690 --> 00:13.460
Un servizio è un tipo di componente Android che viene eseguito in background indipendentemente dall'interfaccia utente.

00:13.490 --> 00:21.770
È stato progettato per attività che non richiedono l'interazione diretta dell'utente, ma che devono eseguire alcune operazioni

00:21.770 --> 00:23.720
per un periodo prolungato.

00:23.720 --> 00:31.760
I servizi sono comunemente utilizzati per gestire attività come la musica di sottofondo, la riproduzione, le operazioni di rete, l'elaborazione

00:31.760 --> 00:33.410
dei dati e altro ancora.

00:33.440 --> 00:40.640
In Android esistono tre tipi di servizi: in primo piano, in background e vincolati.

00:40.640 --> 00:48.320
I servizi in primo piano sono visibili all'utente e vengono utilizzati per attività che richiedono un'interazione

00:48.320 --> 00:50.390
o una notifica continua.

00:50.390 --> 00:58.160
Visualizzano una notifica persistente nella barra delle notifiche per informare l'utente che il servizio è in esecuzione.

00:58.160 --> 01:06.150
Ad esempio, un'applicazione di riproduzione musicale utilizza un servizio in primo piano per riprodurre la musica, anche quando l'applicazione non

01:06.150 --> 01:07.200
è in primo piano.

01:07.200 --> 01:14.490
La notifica potrebbe mostrare il brano corrente, fornire controlli di riproduzione e consentire all'utente di interagire

01:14.490 --> 01:15.510
con la musica.

01:15.510 --> 01:23.580
I servizi in background eseguono attività che non sono direttamente visibili all'utente e non richiedono una notifica

01:23.610 --> 01:24.540
continua.

01:24.540 --> 01:32.430
Sono più adatti per attività che possono essere eseguite silenziosamente senza richiedere l'attenzione costante dell'utente.

01:32.430 --> 01:40.920
Ad esempio, un'applicazione che sincronizza periodicamente i dati con un server potrebbe utilizzare un servizio in background per eseguire

01:40.920 --> 01:48.720
queste operazioni di sincronizzazione a intervalli specifici, mentre i servizi vincolati in Android consentono ai componenti

01:48.720 --> 01:55.710
dell'applicazione, come le attività, di vincolarsi ad essi, i servizi vincolati eseguono i loro compiti finché un

01:55.740 --> 01:59.790
qualsiasi componente dell'applicazione è vincolato ad esso.

01:59.790 --> 02:07.200
Per associare un componente dell'applicazione a un servizio,

02:07.200 --> 02:12.930
in Android si utilizza il metodo bind Service.

02:12.930 --> 02:20.460
I servizi hanno un ciclo di vita che ne definisce la creazione, il funzionamento e la distruzione.

02:20.460 --> 02:25.110
Esistono due tipi di servizi: quelli vincolati e quelli non vincolati.

02:25.110 --> 02:29.880
Analizziamo il ciclo di vita di entrambi i tipi di servizi.

02:29.880 --> 02:32.760
Iniziamo con il servizio Unbound.

02:32.940 --> 02:42.030
I servizi non vincolati vengono avviati con il metodo Start service e funzionano indipendentemente dai componenti che

02:42.030 --> 02:43.440
li hanno avviati.

02:43.440 --> 02:48.660
Possono continuare a funzionare anche se il componente che li ha avviati.

02:48.750 --> 02:51.330
Ad esempio, un'attività viene distrutta.

02:51.330 --> 02:54.420
Quindi viene richiamato il metodo Oncreate.

02:54.420 --> 02:58.710
Questo metodo viene richiamato quando il servizio viene creato inizialmente.

02:58.710 --> 03:02.460
Viene utilizzato per le attività di inizializzazione una tantum.

03:02.460 --> 03:05.250
Il metodo di comando Onstart.

03:05.250 --> 03:09.180
Questo metodo viene richiamato all'avvio del servizio.

03:09.180 --> 03:17.280
Utilizzando il metodo Start service, fornisce il percorso intent al metodo Start service e altri parametri.

03:17.280 --> 03:19.290
Si eseguono attività in background.

03:19.290 --> 03:26.520
In questo metodo si possono restituire valori come start sticky o start not sticky per indicare come il sistema deve

03:26.520 --> 03:28.230
gestire il servizio.

03:28.260 --> 03:35.790
Se viene ucciso a causa dei vincoli di risorse, il servizio viene fermato da sé o da un client e il servizio viene

03:35.790 --> 03:37.050
interrotto.

03:37.050 --> 03:40.080
Quindi nessun callback del metodo Ondestroy.

03:40.080 --> 03:44.460
Questo metodo viene richiamato quando il servizio sta per essere distrutto.

03:44.460 --> 03:50.040
Dovete liberare le risorse acquisite ed eseguire le operazioni di pulizia.

03:50.040 --> 03:53.990
Il secondo tipo di servizi è quello dei servizi vincolati.

03:54.000 --> 04:02.340
I servizi vincolati sono solitamente utilizzati per stabilire una connessione tra i componenti, le attività e il servizio.

04:02.340 --> 04:11.730
Vengono avviati utilizzando il metodo di servizio Bind e sono strettamente legati ai componenti che li vincolano.

04:11.730 --> 04:18.300
Quando tutti i componenti si scollegano dal servizio, quest'ultimo viene automaticamente distrutto.

04:18.300 --> 04:23.370
Il metodo Oncreate come nei servizi non vincolati.

04:23.370 --> 04:28.140
Questo metodo viene richiamato quando il servizio viene creato inizialmente.

04:28.140 --> 04:35.430
Il metodo unbind e il metodo bind vengono richiamati quando un componente si lega al servizio.

04:35.430 --> 04:44.070
Utilizzando il metodo del servizio online, restituisce un'interfaccia eye binder che il componente client può utilizzare per

04:44.070 --> 04:46.140
interagire con il servizio.

04:46.170 --> 04:51.390
Il servizio può eseguire, impostare e fornire al cliente questo raccoglitore.

04:51.390 --> 04:59.820
Ciò consente al client di interagire con il servizio e con tutti i client e di effettuare il bind chiamando unbind.

05:00.000 --> 05:08.740
Il metodo del servizio su unbind viene richiamato quando tutti i componenti si sono svincolati dal servizio.

05:08.760 --> 05:16.020
Si può restituire qui se si vuole che il servizio continui a funzionare anche se non ci sono più componenti

05:16.020 --> 05:24.000
vincolati, ma in genere restituire false porta alla distruzione del servizio quando viene svincolato dal metodo

05:24.000 --> 05:24.800
rebind.

05:24.810 --> 05:33.570
Questo metodo viene richiamato quando un componente già vincolato al servizio si rilega utilizzando il metodo

05:33.600 --> 05:39.930
bind service e il metodo Ondestroy, simile a quello dei servizi non vincolati.

05:39.930 --> 05:44.790
Questo metodo viene richiamato quando il servizio sta per essere distrutto.

05:44.790 --> 05:47.040
Eseguire qui le operazioni di pulizia.

05:47.040 --> 05:54.990
In sintesi, i servizi non vincolati possono essere eseguiti indipendentemente dai componenti e continuare a funzionare anche se il componente

05:54.990 --> 05:57.290
di partenza viene distrutto.

05:57.300 --> 06:03.340
I servizi vincolati sono più strettamente collegati ai componenti che si legano ad essi.

06:03.340 --> 06:09.160
Vengono distrutti automaticamente quando tutti i componenti vincolati si svincolano da essi.

06:09.190 --> 06:14.650
Siate prudenti nel gestire correttamente il ciclo di vita del servizio.

06:14.650 --> 06:22.960
Se non viene gestita correttamente, può causare perdite di risorse o comportamenti indesiderati nell'applicazione.

06:22.960 --> 06:30.850
E ricordate che il caso d'uso specifico per ogni tipo di servizio determinerà se utilizzare servizi vincolati

06:30.850 --> 06:35.590
o non vincolati e come gestire il loro ciclo di vita.
