Pregunta

Me gustaría saber si el usuario está utilizando la aplicación por primera vez. Estoy usando SharedPreferences, pero no estoy seguro si tengo la lógica derecha.

¿Cómo puedo configurar mi booleano isFirstLaunched a cierto cuando los primeros lanzamientos de usuario, e inmediatamente establecen en false después del trabajo se ha hecho?

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;
    }
¿Fue útil?

Solución

Reemplazar el argumento false en getBoolean() por true, entonces la lógica encajará.

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

Esto devolverá true si no hay tal ajuste.

Otros consejos

Puede registrar un BroadcastReceiver para escuchar Intent.ACTION_PACKAGE_FIRST_LAUNCH

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top