Category Archives: Tallentaminen

Tallentaminen Andoirissa

Android tarjoaa useita mahdollisuuksia tallentaa tietoa applikaatioissa. Käymme tässä nopeasti läpi yleisimmät menetelmät. Kolme ensimmäistä menetelmää ovat kaikki tavalla tai toisella tiedostoon kirjoittamista ja vaativat hieman enemmän aikaa IO-operaatioiden takia. Tämä tulisi ottaa huomioon applikaatiossasi ja suorittaa kaikki IO-operaatiot erillisessä säikeissä. Säikeistä ja AssyncTaskia käsitellään erillisessä artikkelissa.

1. Tiedostoon kirjoittaminen

Tämä on suoraviivaista tiedostoon kirjoittamista. Oletuksena Androidissa kirjoitetut tiedostot ovat applikaatiolle yksityisiä, eikä toiset applikaatiot tai käyttäjä itse pysty niitä lukemaan. Tätä voi kuitenkin vaihtaa kohdassa 4 käsiteltävillä moodeilla.

String tiedostoNimi = “tiedoston_nimi”;
String data = “Tallennettava data”;

FileOutputStream output = openFileOutput(Tiedostonimi, context.MODE_PRIVATE);
output.write(data.getBytes());
output.close();

2. Serializable object

Tämä on vain erikoistapaus kohdasta yksi. Serialisoidut objektit voi kirjoittaa tiedostoon suoraan ja Java teoriassa hoitaa kirjoittamisen puolestasi. Mutta jos haluat tukea versiointia ohjelmassasi on sinun itse toteutettava luku ja kirjoitus metodit, eli lopputulos olisi sama kuin tiedostoon kirjoittamisessa.

3. SQL-tietokanta

Androidissa tulee suoraan valmiina SQLite tietokanta, jota voi käyttää tallentamaan tietoa ohjelmasta. Luomasi tietokannat ovat applikaatiolle yksityisiä, eikä niihin pääse käsiksi muista applikaatioista.

Android tukee neljää tietomuotoa tietokannassa.
1) TEXT: tämä on rinnastettavissa Javan Stringiin
2) INTEGER: sama kuin Javan Long
3) REAL: sama kuin Javan Double
4) BLOB: tallentaa tietoa bittitaulukkona

Muuta tietoa tallennettaessa täytyy se ensin muuntaa johonkin näistä muodoista.

Suositeltu tapa käyttää SQLite-tietokantaa on tehdä luokka, mikä jatkaa SQLiteOpenHelper-luokkaa. Tässä luokassa sinun on toteutettava omat versiot onCreate ja onUpgrade()-metodeista. Käsittelen SQLite-tietokannan tekemistä yksityiskohtaisesti ja esimerkkien kanssa seuraavan viikon androidkehitys.fi-blogissa.

4. Preferenssit

SharedPreferences luokka Androidissa mahdollistaa avain – arvo parien tallentamisen yksinkertaisista tietotyypeistä: boolean, float, int, long, string. Preferenssit ovat joko aktiviteetti- tai puhelinkohtaisia.

Aktiviteettikohtaiset preferenssit saa getPreferences()-metodilla ja applikaatiokohtaiset preferenssit getSharedPreferences(“preferenssiNimi”, moodi), missä moodi on joku seuraavista:

  • MODE_PRIVATE: Tämä on oletus moodi ja antaa vain kutsuvalle applikaatiolle oikeuden käsitellä tiedostoa.
  • MODE_WORLD_READABLE: Mikä tahansa applikaatio saa lukuoikeuden tiedostoon.
  • MODE_WORLD_WRITABLE: Mikä tahansa applikaatio saa kirjoitusoikeuden  tiedostoon.
  • MODE_MULTI_PROCESS: Tämä moodi automaattisesti päivittää preferenssit, vaikka ne olisi jo ladattu prosessille. Näin muiden prosessien tekemät muutokset samaan tiedostoon näkyvät heti ja automaattisesti. On kuitenkin parempia tapoja siirtää tietoa prosessista toiseen.

Preferenssien muokkaaminen vaatii Editor-olion käyttöä. Preferenssejä voi käyttää esimerkiksi seuraavasti:

private final String PREFERENSSI_NIMI = “preferenssiNimi”;
private final String NIMI = “nimi”

SharedPreferences preferenssit = getSharedPreferences(PREFERENSSI_NIMI, Context.MODE_PRIVATE);

Editor editori = preferenssit.edit();
editori.putString(NIMI, ”username”);
editori.commit();

Preferenssien lukeminen onnistuu helposti tietotyypin get-metodilla, jossa annetaan preferenssin nimi ja oletusarvo, jos preferenssiä ei löydy:

preferenssit.getString(NIMI, null);