Deze snelle Android-tip laat u kennismaken met de verschillende gegevensopslagopties die beschikbaar zijn op het Android-platform. Een kort praktisch overzicht met overwegingen voor elke opslagoptie zal ook worden verstrekt.
Wanneer u Android-apps ontwikkelt, beschikt u over een aantal opties voor het opslaan en beheren van uw gegevens. Afhankelijk van de app, kun je merken dat je meer dan één van deze gebruikt voor verschillende gegevenstaken.
U kunt gegevensitems opslaan in de interne opslag op de apparaten van uw gebruikers. Het voordeel hiervan is dat het niet afhankelijk is van externe media, maar het nadeel is dat sommige apparaten zeer beperkte hoeveelheden opslagruimte beschikbaar hebben. Opslaan naar het interne geheugen betekent in feite dat gegevensbestanden worden opgeslagen in de interne apparaatdirectorystructuur.
De volgende Java-code toont het openen van een bestand voor gegevensuitvoer:
// verkrijg een FileOutputStream-object door de bestandsnaam FileOutputStream dataFileOutput = openFileOutput ("datafile", Context.MODE_PRIVATE) door te geven;
Wanneer u bestanden opslaat in de interne opslag, hebben andere toepassingen er geen toegang toe en de gebruiker standaard ook niet, dus het biedt een goede betrouwbaarheid. De schrijfmethode FileOutputStream neemt byte-parameters, dus u kunt deze techniek alleen gebruiken om gegevensitems op te slaan die uw programma naar bytes kan converteren.
Veel Android-gebruikers zijn afhankelijk van externe media-opslag zoals SD-kaarten vanwege onvoldoende interne opslag. SD-kaarten bieden uw apps een grotere hoeveelheid opslagruimte, maar ze leggen extra overwegingen op. U kunt bijvoorbeeld niet aannemen dat een gebruiker een SD-kaart of een andere externe mediabron heeft. Daarom moet uw programmeercode controles uitvoeren voordat de gegevens op deze manier worden opgeslagen. Je moet ook rekening houden met de mogelijkheid dat de gebruiker hun SD-kaart verandert.
Met behulp van de klasse Environment kunnen uw apps de beschikbaarheid van schrijfbare externe opslag als volgt controleren:
if (Environment.getExternalStorageState (). equals (Environment.MEDIA_MOUNTED)) // kan de externe opslag gebruiken
Het is ook de moeite waard om in gedachten te houden dat bestanden die op een SD-kaart zijn opgeslagen rechtstreeks door andere apps en door de gebruiker kunnen worden geopend, zodat de gegevens kwetsbaarder zijn voor corruptie.
Als uw app complexere gegevensitems gebruikt, kunt u een SQLite-database maken om ze op te slaan met behulp van het relationele model. Wanneer u een SQLite-database voor uw app maakt, kunt u deze vanuit elk punt binnen uw Java-code openen en is deze vanaf geen enkel ander adres toegankelijk. Het gebruik van een database biedt veel voordelen, zoals de mogelijkheid om gestructureerde query's op te slaan en uit te voeren.
Als u vanuit uw Java-code een aangepaste SQLite-database wilt maken, kunt u de SQLiteOpenHelper-klasse uitbreiden en vervolgens uw tabellen binnen de methode "onCreate" definiëren en als volgt maken:
public void onCreate (SQLiteDatabase db) db.execSQL ("CREATE TABLE Item (ItemID INTEGER, ItemName TEXT);");
Met deze instructie wordt een databasetabel met twee kolommen gemaakt. De SQLiteDatabase-klasse biedt de mogelijkheid om de gegevens te beheren, inclusief query-, invoeg- en updatemethoden. Een potentieel nadeel van het gebruik van een SQLite-database in uw Android-apps is de hoeveelheid vereiste bewerkingscodes en de vereiste vaardigheden. Als u al bekend bent met SQL, zou u geen problemen moeten hebben.
Als u eenvoudige gegevensitems voor uw apps wilt opslaan, is de eenvoudigste methode om gedeelde voorkeuren te gebruiken. Dit is mogelijk de gemakkelijkste optie voor gegevensbeheer die moet worden geïmplementeerd, maar is alleen geschikt voor primitieve typen items zoals cijfers en tekst. Met behulp van Gedeelde voorkeuren modelleert u uw gegevensitems als sleutelwaardeparen. De volgende code geeft aan dat u een verwijzing naar het SharedPreferences-object voor een app krijgt en er een waarde aan schrijft:
// ontvang de voorkeuren en vervolgens de editor, stel een gegevensitem in SharedPreferences appPrefs = getSharedPreferences ("MyAppPrefs", 0); SharedPreferences.Editor prefsEd = appPrefs.edit (); prefsEd.putString ("dataString", "some string data"); prefsEd.commit ();
Alles wat u opslaat in Gedeelde voorkeuren blijft beschikbaar wanneer u de volgende keer uw app uitvoert, dus het is ideaal voor het opslaan van items, zoals gebruikersvoorkeuren en instellingen. Wanneer uw app opstart, kunt u de gedeelde voorkeuren aanvinken en vervolgens uw interface en functionaliteit presenteren. De volgende code demonstreert het ophalen van het stringgegevensitem:
// haal de voorkeuren op en haal dan opgeslagen gegevens op, met een standaardwaarde SharedPreferences appPrefs = getSharedPreferences ("MyAppPrefs", 0); String savedData = appPrefs.getString ("dataString", "");
Omdat Android-apparaten internetverbindingen bieden, kunnen uw apps uiteraard gegevens gebruiken die zijn opgeslagen op internet. Uiteraard moet u overwegen hoe uw toepassingen zullen werken met beperkte of ontbrekende connectiviteit. Net als bij een webtoepassing, kunt u met deze optie gegevens opslaan op vrijwel elk platform of model dat u verkiest. De Java-taal profiteert ook van een reeks standaardbibliotheken voor het afhandelen van gegevens die zijn opgehaald via een netwerk, van bronnen zoals SQL-databases en XML-documenten. De pakketten java.net en android.net bieden klassen voor het beheren van netwerkgegevens.
Als u zich in Eclipse ontwikkelt, kunt u aspecten van gegevensopslag op virtuele apparaten handmatig beheren in het DDMS-perspectief.
Het is onvermijdelijk dat u uw gegevensbeheeraanpak afstemt op uw eigen Android-ontwikkelingsprojecten. Het platform is flexibel, dus er is voldoende keuze beschikbaar. Wanneer u gegevensbeheer in uw apps implementeert, moet u ze zowel op echte apparaten als in de emulator testen, omdat er meer kans is op fouten wanneer gebruikers uw functionaliteit binnen hun eigen unieke context openen.
Sue Smith
Ik ben een web- / softwareontwikkelaar en schrijver van technische / comedy-artikelen - zie BeNormal.info voor details. De nonsense-apps zijn mijn eerste poging tot ontwikkeling van Android. Ik heb voor veel verschillende klanten geschreven, waaronder Smashing Magazine. Mijn eigen sites zijn BrainDeadAir spoof arts magazine. Volg mij op Twitter @BrainDeadAir of mail me op [email protected].