Naar content
Trending apps
  • Inbox by Gmail

  • Maps: Navigatie en OV

  • WhatsApp Messenger

  • Messenger

  • Facebook

Trending games
  • Minecraft Earth

  • Dr. Mario World

  • Harry Potter: Wizards Unite

  • Breaking Bad: Criminal Elements

  • The Elder Scrolls: Blades

Trending smartphones
  • OPPO Find X2 Pro

  • Nokia 8.3

  • Xiaomi Mi 10 Pro

  • Huawei P40 Pro

  • Realme X2 Pro

Nieuwste tablets
  • Samsung Galaxy Tab S6

  • Samsung Galaxy Tab A 10.5

  • Samsung Galaxy Tab S4

  • Samsung Galaxy Tab S3 9.7

  • Asus Zenpad 3S 10

bartfukkink

bartfukkink

  • Lid sinds 11 februari 2011
  • Berichten 358
  • Reputatie 0
  • #1
  • 9 maart 2011
  • 15:30

Gegroet!

Ik ben lekker aan het knutselen met mijn afstudeer applicatie, en daarvoor heb ik de volgende vraag:

Hoe kan ik controleren of een applicatie voor de eerste keer opstart na het installeren?

De situatie:

Ik werk aan een applicatie die zijn content vanuit een XML bestand ophaalt die op een website staat. Deze data wordt vervolgens opgeslagen op een interne sqLite database om te gebruiken. Nu wil ik niet dat de applicatie zijn gegevens iedere keer bij het opstarten op gaat halen, het staat immers in de database (en iets met een begeleider die het niet nodig vind ofzo). Maar hoe kan ik nou controleren of het de eerste keer is dat de applicatie opstart?

Ik heb een versie veld in de database die ik bijvoorbeeld op -1 kan zetten als er nog geen data in staat, maar dat vind ik niet een hele nette oplossing… Weet iemand of er andere manieren voor zijn?

Bewerkt (9 maart 2011 15:30)
fifarunnerr

fifarunnerr

  • Lid sinds 13 juli 2010
  • Berichten 1846
  • Reputatie 10
  • #2
  • 9 maart 2011
  • 15:50

Met SharedPreferences kan je een boolean opslaan op het interne geheugen. Als er geen boolean staat open je hem voor het eerst. Maar het kan ook zo zijn dat men op “Clear Data” drukt bij applicaties en dan is de boolean ook weg. Dus als je dan in androidmanifest.xml het verbied om die data te verwijderen klopt die boolean altijd.
Staat er geen boolean -> App start eerste keer
Anders -> App is al X aantal keer gestart.

Bewerkt (9 maart 2011 15:50)
bartfukkink

bartfukkink

  • Lid sinds 11 februari 2011
  • Berichten 358
  • Reputatie 0
  • #3
  • 9 maart 2011
  • 15:55

Ah dat klinkt als een prima oplossing. Gebruikers mogen hun data wel verwijderen als ze dat graag willen, dan zorg ik er gewoon voor dat het opnieuw opgeslagen wordt.

Ik ga even knutselen en post zo mijn antwoord als ik die gevonden heb. Bedankt! ^.^

Edit: Ok, dat was toch wel erg eenvoudig. Het resultaat:

Lezen:

[COLOR=red]private SharedPreferences _sp;[/COLOR]

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

[COLOR=red] _sp = PreferenceManager.getDefaultSharedPreferences(this);
Boolean DATA_AVAILABLE = _sp.getBoolean("DATA_AVAILABLE", false);[/COLOR]

Log.d("INFO", "DATA_AVAILABLE | " + DATA_AVAILABLE);

//Als DATA_AVAILABLE false is, dan is het dus de eerste keer dat er opgestart wordt
[COLOR=red] if(!DATA_AVAILABLE) {
//Do stuff here[/COLOR]
[COLOR=red]}[/COLOR]
}
Schrijven:
SharedPreferences.Editor spe = _sp.edit();
spe.putBoolean("DATA_AVAILABLE", true);
spe.commit();

Bewerkt (9 maart 2011 15:55)
klwinkel

klwinkel

  • Lid sinds 23 oktober 2010
  • Berichten 951
  • Reputatie 0
  • #4
  • 9 maart 2011
  • 17:46

Als je er een Integer van maakt, dan zou je ook nog kunnen controleren of er een nieuwe versie voor het eerst word opgestart, en dan eventueel opnieuw de xml data ophalen.sla dan het versienummer van de app op in de preferences.

Bewerkt (9 maart 2011 17:46)
Dante

Dante

  • Lid sinds 27 februari 2011
  • Berichten 25
  • Reputatie 0
  • #5
  • 10 maart 2011
  • 01:27

Hmm, handig. Ik heb het met een count op een cursor geregeld of er data in de db zit.

Bewerkt (10 maart 2011 01:27)
bartfukkink

bartfukkink

  • Lid sinds 11 februari 2011
  • Berichten 358
  • Reputatie 0
  • #6
  • 10 maart 2011
  • 08:33

klwinkel;116076
Als je er een Integer van maakt, dan zou je ook nog kunnen controleren of er een nieuwe versie voor het eerst word opgestart, en dan eventueel opnieuw de xml data ophalen.sla dan het versienummer van de app op in de preferences.

Ow dat is inderdaad ook wel een hele mooie optie! En het stelt net zo weinig voor om te maken ^^

Bewerkt (10 maart 2011 08:33)
klwinkel

klwinkel

  • Lid sinds 23 oktober 2010
  • Berichten 951
  • Reputatie 0
  • #7
  • 10 maart 2011
  • 17:41

Ik gebruik het zelf om bij de eerste keer opstarten van een nieuwe versie de gebruiker te attenderen op eventuele nieuwe features, of database tabellen te upgraden als dat nodig is

Bewerkt (10 maart 2011 17:41)
bartfukkink

bartfukkink

  • Lid sinds 11 februari 2011
  • Berichten 358
  • Reputatie 0
  • #8
  • 11 maart 2011
  • 08:54

Daar gebruik ik het nu ook voor inderdaad, en het laden van de data voor de eerste keerWerkt super! ^^

Bewerkt (11 maart 2011 08:54)
botteaap

botteaap

  • Lid sinds 02 augustus 2010
  • Berichten 29
  • Reputatie 0
  • #9
  • 12 maart 2011
  • 00:12

Voor upgrades van je db zou ik persoonlijk gewoon de methodes in http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.htmlgebruiken.

Een preference zetten is handig, maar voldoet niet als je zeker wilt weten of er data in de db zit. Dat zul je inderdaad met een count moeten doen. Het kan bijvoorbeeld zo zijn dat je db om wat voor reden dan ook corrupt is geraakt (ja dat kan). Dan zal de db opnieuw worden aangemaakt –> data weg, terwijl je preference zegt dat er nog data is…

Bewerkt (12 maart 2011 00:12)

Reageer

Om te reageren, dien je te zijn ingelogd. Druk op de onderstaande knop om in te loggen of maak een nieuwe account aan.

Inloggen Registreren