【问题标题】:How can I detect if a user is using my application for the first time?如何检测用户是否是第一次使用我的应用程序?
【发布时间】:2010-09-21 16:17:44
【问题描述】:

我想知道用户是否是第一次使用该应用程序。我正在使用SharedPreferences,但我不确定我是否有正确的逻辑。

如何在用户首次启动时将isFirstLaunched boolean 设置为 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;
    }

【问题讨论】:

  • 请注意,如果用户从应用程序管理器中清除数据,SharedPreference 将被删除。
  • 好点。还有比 SharedPreferences 更正确的解决方案吗?

标签: java android sharedpreferences


【解决方案1】:

getBoolean() 中的false 参数替换为true,这样逻辑就合适了。

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

如果没有这样的设置,这将返回true

【讨论】:

    【解决方案2】:

    您可以注册一个 BroadcastReceiver 来监听 Intent.ACTION_PACKAGE_FIRST_LAUNCH

    http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_FIRST_LAUNCH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-27
      • 2011-09-02
      • 1970-01-01
      • 2019-02-15
      • 1970-01-01
      相关资源
      最近更新 更多