Up og kjører med Realm for Android
19
Del
3
Del
Dette Cyber mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.
Innledning
Hvis du har vært å holde tritt med de nyeste trendene i Android utvikling, har du sannsynligvis hørt om Realm. Realm er et lett database som kan erstatte både SQLite og ORM bibliotekene i din Android-prosjekter.
I forhold til SQLite, er Realm raskere og har mange moderne funksjoner, som for eksempel JSON støtte, en flytende API, data endringsmeldinger og kryptering støtte, som alle gjør livet enklere for Android-utviklere.
I denne rask spiss, du kommer til å lære det grunnleggende Realm for Android. I denne opplæringen, vil jeg bli useing Realm v0.84.1.
1. Legge Realm til et prosjekt
For å bruke Realm i en Android-prosjektet, må du legge det som en kompilering avhengighet i app modulens build.gradle fil
kompilering 'io.realm. Riket-android: 0.84.1 '
2. Opprette en Realm
En Realm ligner på en SQLite database. Den har en fil er knyttet til den, som en gang skapt, vil vedvare på Android filsystem.
For å opprette en ny Realm, kan du ringe den statiske Realm.getInstance metoden fra innsiden noen aktivitet.
Realm myrealm = Realm.getInstance (sammenheng);.
Legg merke til at du ringer Realm.getInstance, uten å passere en RealmConfiguration til det, resultater i etableringen av en Realm fil kalt default.realm
Hvis du vil legge til en annen Realm til programmet ditt, må du bruke en RealmConfiguration.Builder objekt og gi Realm filen et unikt navn.
Realm myOtherRealm = Realm.getInstance (ny RealmConfiguration.Builder (kontekst) .name ("myOtherRealm.realm"). bygge ());
3. Opprette en RealmObject
Alle Bean kan lagres i en Realm når den utvider RealmObject klassen. Hvis du lurer på hva en Javabean er, er det rett og slett en Java-klasse som er serializable, har en standard konstruktør, og har getter /setter-metoder for sine medlemsvariabler. For eksempel kan forekomster av følgende klasse enkelt lagres i en Realm:
public class Land strekker RealmObject {private String navn; private int befolkningen; offentlig Land () {} public String getName () {return navn; } Public void setName (String navn) {this.name = navn; } Public int getPopulation () {return befolkningen; } Public void setPopulation (int befolkningen) {this.population = befolkningen; }}
Hvis du vil bruke et medlem variabel av en RealmObject som en primærnøkkel, kan du brukePrimaryKey merknader. For eksempel, her er hvordan du vil legge til en primærnøkkel kalt koden til Land Klasse:
PrimaryKeyprivate String kode; public String Vis koder () {return kode;} public void setCode (String kode) {this.code = kode; }
4. Opprette Transaksjoner
Mens du leser data fra en Realm er veldig enkelt, så vil du se i neste trinn, skrive data til det er litt mer komplisert. Realm er ACID-kompatibel og for å sikre atomicity og konsistens, Realm tvinger deg til å utføre alle skriveoperasjoner inne i en transaksjon.
Hvis du vil starte en ny transaksjon, bruker beginTransaction metoden. Tilsvarende, for å avslutte transaksjonen, bruker commitTransaction metoden
Her er hvordan du vil opprette og lagre en forekomst av Land klassen.
MyRealm.beginTransaction (); //Opprett et objekt Land country1 = myRealm.createObject (Country.class); //Sett feltene country1.setName ("Norge"); country1.setPopulation (5165800); country1.setCode ("NO"); myRealm.commitTransaction ();
Du har kanskje lagt merke til at country1 ble ikke opprettet ved hjelp av konstruktøren av landet klassen. For en Realm å administrere en forekomst av en RealmObject, må forekomsten bli opprettet ved hjelp av Create metoden.
Hvis du må bruke konstruktøren, ikke glem å bruke copyToRealm metode for den aktuelle Realm objekt før du forplikte transaksjonen. Her er et eksempel:
//Opprett objectCountry country2 = new Country();country2.setName("Russia");country2.setPopulation(146430430);country2.setCode("RU");myRealm.beginTransaction(); Land copyOfCountry2 = myRealm.copyToRealm (country2); myRealm.commitTransaction ();
5. Skrive spørringer
Realm byr på en svært intuitiv og flytende API for å lage spørringer. For å opprette en spørring, kan du bruke hvor metode for den aktuelle Realm objektet og passere klassen av objektene du er interessert i. Når du har opprettet spørringen, kan du hente alle resultatene med findAll metoden, som returnerer en RealmResults objekt. I følgende eksempel, vi hente og skrive ut alle objekter av typen Land:
RealmResults < Country > results1 = myRealm.where (Country.class) .findAll (); for (Land c: results1) {Log.d ("results1", c.getName ());} //Skriver Norge, Russland
Realm tilbud flere treffende navnet metoder, for eksempel beginsWith, endsWith, lesserThan og Større enn, kan du bruke til å filtrere resultatene. Følgende kode viser deg hvordan du kan bruke Større enn metoden for å hente bare de Land objekter der befolkningen er større enn 100 millioner:
RealmResults < Country > results2 = myRealm.where (Country.class) .greaterThan ("befolkning", 100 millioner) .findAll (); //Får bare Russland
Hvis du vil at resultatene av spørringen som skal sorteres, kan du bruke findAllSorted metode . Som sine argumenter, tar det en streng som angir navnet på feltet for å sortere og en boolsk spesifiserer sorteringsrekkefølgen
//Sorter etter navn, i synkende orderRealmResults <. Country > results3 = myRealm.where (Country.class) .findAllSorted ("navn", false); //Gets Russland, Norge
Konklusjon
I denne rask spiss, lært deg hvordan du bruker Realm i en Android prosjekt. Du så hvor enkelt det er å lage en Realm database, lagre data i det, og spørre etter den. Hvis du vil vite mer om Realm for Android, kan du gå gjennom sin Java dokumentasjon. Anmeldelser