WEBVTT

1
00:02.120 --> 00:05.150
Abbiamo terminato la sezione dell'origine
dati remota.

2
00:05.150 --> 00:08.180
Ora passiamo al repository.

3
00:08.180 --> 00:15.770
Lo scopo principale di un repository in
un'applicazione Android è gestire

4
00:15.770 --> 00:17.090
le operazioni sui dati e astrarre le fonti
di dati.

5
00:17.090 --> 00:24.500
Agisce come mediatore tra diverse fonti di
dati, come database

6
00:24.500 --> 00:26.990
locali, servizi di rete e cache, e il
resto dell'applicazione.

7
00:26.990 --> 00:33.470
Utilizzando un repository, è possibile
centralizzare e incapsulare la logica di

8
00:33.500 --> 00:34.820
recupero dei dati, rendendola più facile
da gestire e testare.

9
00:34.820 --> 00:40.640
Il repository fornisce un'API pulita per
l'accesso ai dati al resto
dell'applicazione.

10
00:40.640 --> 00:46.700
Il ViewModel o altri componenti non devono
sapere da dove provengono i dati.

11
00:46.700 --> 00:48.860
Rete, database e così via.

12
00:48.890 --> 00:53.480
La separazione delle preoccupazioni è lo
scopo principale del repository.

13
00:53.480 --> 01:00.660
Separa la logica di recupero dei dati
dalla logica dell'interfaccia utente,
aderendo alla singola responsabilità Il

14
01:00.660 --> 01:07.500
repository principale rende il codice più
testabile, consentendo di prendere in giro
il repository nei test.

15
01:07.500 --> 01:15.390
Centralizza tutta la logica relativa ai
dati, facilitando la gestione della

16
01:15.390 --> 01:17.040
cache, della sincronizzazione e di altre
attività di gestione dei dati.

17
01:17.040 --> 01:19.380
Passiamo ad Android Studio.

18
01:19.380 --> 01:21.180
Creare un nuovo pacchetto.

19
01:21.180 --> 01:24.180
Lo chiamerò repository.

20
01:24.180 --> 01:32.550
All'interno di questo pacchetto di
repository, creare una nuova classe Kotlin
e chiamarla movie repository o repository.

21
01:33.930 --> 01:40.950
Qui, all'interno della classe repository,
all'inizio recupererò i dati dall'API.

22
01:40.950 --> 01:44.910
Poi si recuperano i dati dal database
locale.

23
01:44.910 --> 01:53.250
Dobbiamo elencare tutte le funzioni
disponibili nelle nostre applicazioni

24
01:53.250 --> 01:54.060
e la nostra applicazione relativa al
recupero dei dati.

25
01:54.060 --> 02:01.150
Se torniamo al servizio API, abbiamo solo
una funzione relativa al recupero dei
dati.

26
02:01.150 --> 02:03.100
Si chiama "ottenere film popolari".

27
02:03.100 --> 02:06.010
Dobbiamo iniziare con la funzione di
sospensione.

28
02:06.010 --> 02:12.400
Poiché questa funzione è una funzione di
sospensione, non è possibile chiamare le
funzioni di sospensione da funzioni
normali,

29
02:12.430 --> 02:19.090
solo le funzioni di sospensione possono
essere chiamate da funzioni di sospensione
o da un ambito di coroutine.

30
02:19.090 --> 02:20.710
Funzione di sospensione.

31
02:20.710 --> 02:25.690
Ottenere film popolari da API online.

32
02:25.720 --> 02:34.600
Questa funzione accetta una chiave API
come parametro e restituisce un elenco di
film alt plus.

33
02:34.600 --> 02:37.750
Inserite per importare il filmato dal
nostro pacchetto.

34
02:37.750 --> 02:43.150
Restituisce l'istanza di retrofit dot API
dot.

35
02:43.150 --> 02:45.850
Trovate qui i film più popolari.

36
02:45.850 --> 02:52.990
È necessario passare la chiave API e
ottenere i risultati che restituiscono un
elenco di film.

37
02:53.020 --> 02:55.540
Lasciate che ve lo spieghi in dettaglio.

38
02:55.540 --> 03:00.200
Funzione di sospensione La parola chiave
sospensione viene utilizzata per definire
una funzione di sospensione.

39
03:00.200 --> 03:06.920
In Kotlin, le funzioni di sospensione
possono essere messe in pausa e riprese in
un secondo momento, il

40
03:06.920 --> 03:14.180
che le rende adatte a operazioni di lunga
durata come le richieste di rete; abbiamo
parlato di funzioni

41
03:14.180 --> 03:20.960
di sospensione e di coroutine negli esempi
precedenti e le sezioni precedenti
eseguono questa funzione in background.

42
03:20.960 --> 03:27.020
Questo aiuta a mantenere il thread
principale sbloccato, garantendo
un'esperienza utente più fluida.

43
03:27.020 --> 03:33.740
Le funzioni di sospensione possono essere
chiamate solo da altre funzioni di
sospensione o all'interno di una
coroutine.

44
03:33.740 --> 03:41.630
Quindi, se notate che get popular movies è
una funzione di

45
03:41.630 --> 03:42.290
sospensione, la chiamiamo all'interno di
un ambito di funzione di sospensione.

46
03:42.290 --> 03:46.910
Questo è il nome della funzione e questa è
la chiave API del parametro.

47
03:46.940 --> 03:48.290
È di tipo stringa.

48
03:48.290 --> 03:54.920
Questo parametro accetta una chiave API
come stringa,

49
03:54.950 --> 03:55.550
necessaria per autenticare la richiesta
all'API di Tmdb.

50
03:55.580 --> 03:58.000
Il tipo di ritorno è di tipo.

51
03:58.000 --> 03:59.170
Elenco dei film.

52
03:59.200 --> 04:02.710
Questa funzione restituisce un elenco di
oggetti filmati.

53
04:02.710 --> 04:10.780
La classe movie è una classe di dati che
rappresenta la struttura del filmato come

54
04:10.780 --> 04:16.300
restituito dall'API di Tmdb e che abbiamo
creato negli esempi e nei video
precedenti.

55
04:16.300 --> 04:22.810
Nel corpo di questa funzione, abbiamo la
parola chiave return che restituisce un
elenco di film.

56
04:22.840 --> 04:28.930
L'istanza di retrofit è un oggetto
singleton che fornisce un'istanza di
retrofit configurata.

57
04:28.930 --> 04:36.280
API è una proprietà che rappresenta
l'interfaccia del servizio API, il
servizio MDB.

58
04:36.280 --> 04:41.890
Questa interfaccia definisce gli endpoint
dell'API e i rispettivi metodi di
richiesta.

59
04:41.890 --> 04:48.700
Se torniamo all'istanza di retrofit,
possiamo vedere che

60
04:48.700 --> 04:49.150
abbiamo due variabili, l'URL di base e
l'API.

61
04:49.180 --> 04:54.910
Stiamo accedendo all'istanza di retrofit e
stiamo accedendo a questa variabile API.

62
04:55.090 --> 04:59.210
Questa API restituisce un'istanza di
retrofit.

63
04:59.240 --> 05:01.100
Ottenere film popolari.

64
05:01.100 --> 05:09.080
Stiamo accedendo a un oggetto di questa
interfaccia di servizio API e stiamo
chiamando questa

65
05:09.080 --> 05:16.550
funzione get popular movies, fornendo la
chiave API come parametro, e stiamo
accedendo ai risultati.

66
05:16.550 --> 05:24.560
Questo metodo è definito nel servizio
Tmdb, qui nell'interfaccia del servizio
API, e viene

67
05:24.560 --> 05:27.680
utilizzato per effettuare una richiesta di
rete per recuperare i film più popolari.

68
05:27.680 --> 05:37.040
Prende la chiave API come parametro e
restituisce un

69
05:37.040 --> 05:38.000
oggetto movie response, che contiene i
dati restituiti dall'API.

70
05:38.030 --> 05:47.120
Il metodo Get Popular Movies restituisce
un oggetto di risposta

71
05:47.120 --> 05:49.010
film, strutturato in modo da corrispondere
alla risposta JSON dell'API.

72
05:49.010 --> 05:55.340
Se torniamo a Get Popular movies, si può
notare che la risposta del film è il

73
05:55.350 --> 06:01.500
tipo di ritorno di questa funzione, che
corrisponde esattamente alla struttura di
questa risposta JSON.

74
06:01.500 --> 06:07.830
Se approfondiamo la risposta del filmato,
notiamo che contiene quattro campi.

75
06:07.830 --> 06:15.300
Siamo interessati a ottenere il campo dei
risultati, quindi non

76
06:15.300 --> 06:16.410
otterremo le pagine, le pagine totali e i
risultati totali.

77
06:16.410 --> 06:19.380
Siamo interessati a ottenere i risultati.

78
06:19.380 --> 06:25.170
Quindi abbiamo accesso al campo dei
risultati all'interno di questo
repository.

79
06:25.200 --> 06:28.080
Anche in questo caso si tratta di
un'istanza di retrofit.

80
06:28.080 --> 06:36.750
Otteniamo l'API, chiamiamo i film popolari
fornendo la chiave API

81
06:36.750 --> 06:38.070
e otteniamo i risultati, ovvero un elenco
di film.

82
06:38.070 --> 06:44.640
Quindi il tipo di ritorno di questa
funzione sarà un elenco di film in
seguito.

83
06:44.640 --> 06:47.130
Torniamo a questo repository.

84
06:47.130 --> 06:52.380
Quando si tenta di recuperare i dati da un
database offline o locale


