2010-09-21 101 views
2

我想知道用戶是否第一次使用該應用程序。我正在使用SharedPreferences,但我不確定我是否擁有正確的邏輯。如何檢測用戶是否第一次使用我的應用程序?

如何在用戶首次啓動時將我的isFirstLaunched布爾值設置爲true,然後在完成工作後立即將其設置爲false?

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

注意,如果用戶清除從應用程序管理器中的數據,SharedPreference將被刪除。 – 2010-09-21 17:13:49

+0

偉大的一點。有沒有比SharedPreferences更正確的解決方案? – 2010-09-21 17:56:48

回答

5

通過true替換getBoolean()false參數,那麼該邏輯將適合。

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

如果沒有這樣的設置,這將返回true

相關問題