Android-sovelluksen koodin ja arkkitehtuurin uudistaminen
Jalava, Elisa (2019)
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2019053113787
https://urn.fi/URN:NBN:fi:amk-2019053113787
Tiivistelmä
Insinöörityössä Android-sovellus uudistettiin koodipohjalta. Tarkoituksena oli päivittää sen
tietokanta ja käyttöliittymä käyttäen Androidin arkkitehtuurikomponentteja. Sovelluksen arkkitehtuurista oli tarkoitus saada selkeää ja koodista luettavaa, jotta uusia ominaisuuksia pystyttäisiin toteuttamaan.
Sovelluksessa käytettiin aluksi kovakoodattua SQLite-tietokantaa. Perinteisen SQLiten ollessa työläs käsitellä, ei tietokannan rakennetta pystytty päivittämään. Uusia ominaisuuksia
varten tietokanta piti päivittää uuteen versioon ja vanha koodi uudistettava.
Uudistukseen käytettiin Googlen tarjoamaa Room-arkkitehtuurikomponenttia. Room on
ORM-tyylinen abstrakti kehys SQLiten ylle. Se mahdollistaa tehokkaan yhteyden Java-koodin ja SQLite-tietokannan välillä muuttamalla tietokantahaun tuloksia Java-objekteiksi ja
Java-objekteja tietokantaobjekteiksi.
Migraatio aloitettiin luomalla jokaiselle tietokantataululle omat Entity- ja DAO-luokkansa. Entity-luokat toimivat tietokantataulujen malleina, jotta Room voi annotaatioiden avulla luoda
niistä Java-olioita. DAO-luokat tarjoavat abstraktit metodit tietokannan kanssa työskentelemiseen.
DAOt yhdistetään RoomDatabase-olioon, joka rakennetaan sovelluksen ajon alussa ja suorittaa migraatiot. Tämän sovelluksen migraatio oli kaksivaiheinen.
Tietokanta liitetään näkymään joko kontrollerin tai ViewModelin kautta. Kontrolleri sisältää
metodit yleisille tietokantatoiminnoille.
ViewModel tarjoaa näkymälle tarkkailijan, joka tarkkailee tietokantakyselyä tai -oliota. Muutoksen tapahduttua näkymää huomautetaan ja UI-päivitys tehdään. Tarkkailtavat ovat LiveData-objekteja, jotka sisältävät kyselyn tuloksen. Jokaiselle näkymäfragmentille tehtiin oma
malliluokkansa. Mallit ovat elinkaaririippuvaisia: ne ovat aktiivisina silloin, kun näkymä on.
Tuloksena sovelluksen jatkokehittäminen on sujuvampaa.
tietokanta ja käyttöliittymä käyttäen Androidin arkkitehtuurikomponentteja. Sovelluksen arkkitehtuurista oli tarkoitus saada selkeää ja koodista luettavaa, jotta uusia ominaisuuksia pystyttäisiin toteuttamaan.
Sovelluksessa käytettiin aluksi kovakoodattua SQLite-tietokantaa. Perinteisen SQLiten ollessa työläs käsitellä, ei tietokannan rakennetta pystytty päivittämään. Uusia ominaisuuksia
varten tietokanta piti päivittää uuteen versioon ja vanha koodi uudistettava.
Uudistukseen käytettiin Googlen tarjoamaa Room-arkkitehtuurikomponenttia. Room on
ORM-tyylinen abstrakti kehys SQLiten ylle. Se mahdollistaa tehokkaan yhteyden Java-koodin ja SQLite-tietokannan välillä muuttamalla tietokantahaun tuloksia Java-objekteiksi ja
Java-objekteja tietokantaobjekteiksi.
Migraatio aloitettiin luomalla jokaiselle tietokantataululle omat Entity- ja DAO-luokkansa. Entity-luokat toimivat tietokantataulujen malleina, jotta Room voi annotaatioiden avulla luoda
niistä Java-olioita. DAO-luokat tarjoavat abstraktit metodit tietokannan kanssa työskentelemiseen.
DAOt yhdistetään RoomDatabase-olioon, joka rakennetaan sovelluksen ajon alussa ja suorittaa migraatiot. Tämän sovelluksen migraatio oli kaksivaiheinen.
Tietokanta liitetään näkymään joko kontrollerin tai ViewModelin kautta. Kontrolleri sisältää
metodit yleisille tietokantatoiminnoille.
ViewModel tarjoaa näkymälle tarkkailijan, joka tarkkailee tietokantakyselyä tai -oliota. Muutoksen tapahduttua näkymää huomautetaan ja UI-päivitys tehdään. Tarkkailtavat ovat LiveData-objekteja, jotka sisältävät kyselyn tuloksen. Jokaiselle näkymäfragmentille tehtiin oma
malliluokkansa. Mallit ovat elinkaaririippuvaisia: ne ovat aktiivisina silloin, kun näkymä on.
Tuloksena sovelluksen jatkokehittäminen on sujuvampaa.