Alternativer for dataadministrasjon for Android-programmer

Denne Android-raske tipsen vil introdusere deg til de forskjellige data lagringsalternativene som er tilgjengelige på Android-plattformen. En kort praktisk oversikt med hensyn til hvert lagringsalternativ vil også bli gitt.

Når du utvikler Android-applikasjoner, har du en rekke alternativer når det gjelder hvordan du lagrer og administrerer dataene dine. Avhengig av appen kan du finne deg selv ved å bruke mer enn en av disse til forskjellige dataoppgaver.


Intern lagring

Du kan lagre dataposter til det interne lagringsområdet på brukerens enheter. Fordelen med dette er at den ikke stole på noe eksternt medie, men ulempen er at noen enheter har svært begrenset lagringsplass tilgjengelig. Lagring til internt minne betyr i hovedsak å lagre datafiler i den interne enhetens katalogstruktur.

Følgende Java-kode demonstrerer åpning av en fil for datautgang:

// få et FileOutputStream-objekt ved å sende filnavnet FileOutputStream dataFileOutput = openFileOutput ("datafile", Kontekst.MODE_PRIVATE);

Når du lagrer filer til det interne lagringsområdet, kan andre programmer ikke få tilgang til dem, og som standard kan ikke brukeren, så det gir god pålitelighet. FileOutputStream-skrivemetoden tar byteparametere, så du kan bare bruke denne teknikken til å lagre dataposter som programmet kan konvertere til byte.


SD-kort

Mange Android-brukere er avhengige av ekstern media lagring som SD-kort på grunn av utilstrekkelig intern lagring. SD-kort gir appene dine økt lagringsplass, men de legger til flere hensyn. For eksempel kan du ikke anta at en bruker vil ha et SD-kort eller annen ekstern medie ressurs. Av denne grunn må programmeringskoden din utføre kontroller før du lagrer data på denne måten. Du må også ta imot muligheten for at brukeren skifter SD-kortet.

Ved hjelp av miljøklassen kan appene dine sjekke tilgjengeligheten av skrivebar ekstern lagring som følger:

hvis (Environment.getExternalStorageState (). likestiller (Environment.MEDIA_MOUNTED)) // kan bruke ekstern lagring

Det er også verdt å huske på at filer som er lagret på et SD-kort, kan nås av andre apper og av brukeren direkte, slik at dataene er mer utsatt for korrupsjon.


databaser

Hvis appen din bruker mer komplekse dataposter, kan du opprette en SQLite-database for å lagre dem ved hjelp av relasjonsmodellen. Når du oppretter en SQLite-database for appen din, kan du få tilgang til den fra hvilket som helst punkt i Java-koden din, og den vil ikke være tilgjengelig fra andre steder. Det er mange fordeler med å bruke en database, for eksempel muligheten til å lagre og utføre strukturerte spørringer.

For å bygge en tilpasset SQLite-database fra Java-koden, kan du utvide SQLiteOpenHelper-klassen, deretter definere og opprette tabellene dine i "onCreate" -metoden, som følger:

Offentlig tomgang onCreate (SQLiteDatabase db) db.execSQL ("CREATE TABLE Item (ItemID INTEGER, ItemName TEXT);"); 

Denne setningen oppretter en databasetabell med to kolonner i den. SQLiteDatabase-klassen gir muligheten til å administrere dataene, inkludert spørring, innsetting og oppdatering. En potensiell ulempe ved å bruke en SQLite-database i Android-appene dine er mengden behandlingskode som kreves, og det nødvendige ferdighetssettet. Hvis du allerede vet veien rundt SQL, bør du ikke ha noen problemer.


Delte innstillinger

Hvis du trenger å lagre enkle dataelementer for appene dine, er det enkleste å bruke Delt innstillinger. Dette er muligens det enkleste datastyringsalternativet som skal implementeres, men det er bare egnet for primitiv type elementer som tall og tekst. Ved å bruke Delt forhåndsinnstillinger, modellerer du dataelementene som nøkkelparametre. Følgende kode viser at du får en referanse til SharedPreferences-objektet for en app og skriver en verdi til den:

// få innstillingene, deretter rediger, sett inn et datapunkt SharedPreferences appPrefs = getSharedPreferences ("MyAppPrefs", 0); SharedPreferences.Editor prefsEd = appPrefs.edit (); prefsEd.putString ("dataString", "some string data"); prefsEd.commit ();

Alt du lagrer til Delte innstillinger, vil fortsatt være tilgjengelig neste gang appen din kjører, så den er ideell for lagring av elementer som brukerpreferanser og innstillinger. Når appen din starter, kan du sjekke delte preferanser, og deretter presentere grensesnittet og funksjonaliteten tilsvarende. Følgende kode demonstrerer henting av strengdataelementet:

// få innstillingene og hent deretter lagrede data, angi en standardverdi SharedPreferences appPrefs = getSharedPreferences ("MyAppPrefs", 0); String savedData = appPrefs.getString ("dataString", "");

Nettlagring

Siden Android-enheter gir Internett-tilkobling, kan appene dine selvfølgelig bruke data som er lagret på nettet. Naturligvis må du vurdere hvordan programmene dine takler begrenset eller manglende tilkobling. Som med et webprogram, lar dette alternativet lagre data ved hjelp av nesten hvilken som helst plattform eller modell du foretrekker. Java-språket har også fordeler fra en rekke standardbiblioteker for håndtering av data hentet over et nettverk, fra kilder som SQL-databaser og XML-dokumenter. Pakken java.net og android.net gir klasser for å administrere nettverksdata.


Konklusjon

Hvis du utvikler deg i Eclipse, kan du manuelt kontrollere aspekter av datalagring på virtuelle enheter i DDMS-perspektivet.

Uunngåelig må du skreddersy din datastyrings tilnærming til dine egne Android-utviklingsprosjekter. Plattformen er en fleksibel, så det er mange valgmuligheter tilgjengelig. Når du implementerer datastyring i appene dine, må du kontrollere at de testes på faktiske enheter, så vel som i emulatoren, da det er mer potensial for feil når brukerne får tilgang til funksjonaliteten i sine egne unike sammenhenger.


om forfatteren

Sue Smith
Jeg er en web / programvareutvikler og teknisk / komedieforfatter - se BeNormal.info for detaljer. Nonsensappene er mitt første forsøk på Android-utvikling. Jeg har skrevet for mange forskjellige kunder, inkludert Smashing Magazine. Mine egne nettsteder inkluderer BrainDeadAir spoof arts magazine. Følg meg på Twitter @BrainDeadAir eller send meg en e-post på [email protected].