2010-09-21 2 views
2

Je voudrais savoir si l'utilisateur utilise l'application pour la première fois. J'utilise SharedPreferences, mais je ne suis pas sûr si j'ai la bonne logique.Comment puis-je détecter si un utilisateur utilise mon application pour la première fois?

Comment puis-je définir mon booléen isFirstLaunched sur true lors du premier lancement de l'utilisateur, puis immédiatement sur false après le travail?

protected void onStart() { 
     super.onStart(); 

     if(isFirstLaunch()){ 
      populateDefaultQuotes(); 

      //Save the preferences, isFirstLaunch will now be false 
      SharedPreferences settings = getSharedPreferences(Constants.PREFS_NAME, 0); 
      SharedPreferences.Editor editor = settings.edit(); 
      editor.putBoolean("isFirstLaunch", false); 
      editor.commit(); 
     } 

     setupUI(); 
     checkOrientation(); 
     restoreCache(); 
    } 

    private void populateDefaultQuotes(){ 
     System.out.println("!!!!!! FIRST TIMER !!!!!!"); 
    } 

    private boolean isFirstLaunch() { 
     // Restore preferences 
     SharedPreferences settings = getSharedPreferences(Constants.PREFS_NAME, 0); 
     boolean isFirstLaunch = settings.getBoolean("isFirstLaunch", false); 

     return isFirstLaunch; 
    } 
+1

Soyez conscient que si un utilisateur efface les données du Gestionnaire d'applications, le SharedPreference sera effacé. –

+0

grand point. Y a-t-il une solution plus correcte que SharedPreferences? –

Répondre

5

Remplacer l'argument false dans getBoolean() par true, alors la logique s'adaptera.

boolean isFirstLaunch = settings.getBoolean("isFirstLaunch", true); 

Cela retourne true s'il n'y a pas de réglage.

Questions connexes