📖 Teorija
Tinklas, Retrofit ir suspend
Iki šiol meniu buvo „iš kodo". Bet tikra Pica picas laiko serveryje — tame Go backende, kurį paleidai 1 pamokoje. Metas prisijungti.
Bendrauti su serveriu naudosim Retrofit — populiariausią HTTP biblioteką Androidui. Jos idėja graži: aprašai sąsają (interface), o Retrofit pats parašo tinklo kodą.
interface PicaApi {
@GET("menu")
suspend fun getMenu(): List<MenuItemDto>
}
Kelios sąvokos:
suspend— funkcija „pristabdoma" ir vėl tęsiama. Tinklo užklausa lėta, todėl ji vyksta koroutinoje, ne pagrindinėje gijoje (kitaip UI užšaltų).- DTO (Data Transfer Object) — kaip duomenys atrodo JSON'e iš serverio. Serveris siunčia
price_cents(centus), o mūsų UI noripriceeurų. Todėl DTO atskiras nuo domenoMenuItem, o tarp jų — mažas vertėjas. - Repozitorija — sluoksnis tarp ViewModel ir API: gauna DTO, paverčia domenu, grąžina „švarius"
MenuItem.
Svarbu — sujungsim RANKOMIS. Šioje pamokoje Retrofit instanciją (bazinis URL, JSON keitiklis) susikursim patys, tiesiogiai. Koino kol kas nenaudojam — jis ateis 6 pamokoje. Tai sąmoninga: pirma pajusk, kiek rankinio jungimo reikia, tada pamatysi, ką Koinas išsprendžia.
Statykim: pirma serviso sąsaja + DTO, tada — meniu iš serverio į ekraną.