una tutorial studio programacion programa por pasar para otro español desde crear compartir como cero celular app aplicaciones aplicacion android sharedpreferences android-preferences

android - tutorial - Ejecutar un fragmento de código solo una vez cuando se instala una aplicación



manual de programacion android pdf (4)

Quiero ejecutar un fragmento de código solo una vez en mi aplicación y es cuando lo ejecuto por primera vez (aplicación recién instalada). ¿Cómo podría hacer esto? ¿Alguien puede explicar cómo dar un pedazo de código?

En realidad, en mi proyecto de Android quiero crear una base de datos e insertar algunos valores solo en la primera ejecución. Después de eso, ese fragmento de código en particular no debería ejecutarse de nuevo. ¿Cómo puedo lograr este mecanismo a través de SharedPreferences o Preferences .

Código de ejemplo será más útil.


Donde sea que necesite ejecutar este código en su aplicación:

  1. Compruebe si el booleano firstTime es verdadero en las preferencias compartidas
  2. Si no

    • Ejecutar el código de una vez
    • Guardar firstTime como verdadero en preferencias compartidas

Algo como esto:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); if(!prefs.getBoolean("firstTime", false)) { // run your one time code here SharedPreferences.Editor editor = prefs.edit(); editor.putBoolean("firstTime", true); editor.commit(); }


Esto es lo que hago en esas situaciones:

wmbPreference = PreferenceManager.getDefaultSharedPreferences(this); isFirstRun = wmbPreference.getBoolean("FIRSTRUN", true); if (isFirstRun) { // Do your magic here SharedPreferences.Editor editor = wmbPreference.edit(); editor.putBoolean("FIRSTRUN", false); editor.commit(); }else{ //what you do everytime goes here }

espero que esto ayude


Tu podrías intentar :

SharedPreferences wmbPreference = PreferenceManager.getDefaultSharedPreferences(this); boolean isFirstRun = wmbPreference.getBoolean("FIRSTRUN", true); if (isFirstRun) { // Code to run once SharedPreferences.Editor editor = wmbPreference.edit(); editor.putBoolean("FIRSTRUN", false); editor.commit(); }

Escribe esto en tu primera actividad en crear. Luego después el código no se ejecutará de nuevo.


Antes de todo puedes usar SQLiteOpenHelper . Es la forma preferida de hacer cosas con base de datos. Esta clase tiene un onCreate(SQLiteDatabase) , que se llama cuando se crea la primera base de datos. Creo que te queda bien.

Si desea más flexibilidad y su primera lógica no está vinculada solo con la base de datos, puede usar la muestra proporcionada anteriormente. Solo necesitas ponerlo en el punto de inicio.

Hay 2 puntos de inicio. Si solo tiene una actividad, puede poner su código en el método onCreate , por lo que será así:

public void onCreate(Bundle savedInstanceState) { // don''t forget to call super method. super.onCreate(savedInstanceState); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); if (!prefs.getBoolean("firstTime", false)) { // <---- run your one time code here databaseSetup(); // mark first time has ran. SharedPreferences.Editor editor = prefs.edit(); editor.putBoolean("firstTime", true); editor.commit(); } }

No olvide poner la declaración de actividad en manifiesto , así como sus intentfilters de intentfilters (acción = MAIN , categoría = LAUNCHER ).

Si tiene más de una actividad y no desea duplicar su lógica de inicio, solo puede poner su lógica de inicialización en la instancia de la Aplicación, que se crea antes de todas las actividades (y otros componentes, como servicios, receptores de difusión, proveedores de contenido) .

Solo crea una clase como esa:

public class App extends Application { @Override public void onCreate() { super.onCreate(); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); if (!prefs.getBoolean("firstTime", false)) { // <---- run your one time code here databaseSetup(); // mark first time has ran. SharedPreferences.Editor editor = prefs.edit(); editor.putBoolean("firstTime", true); editor.commit(); } }

Todo lo que necesita para que esto funcione, se coloca en la etiqueta de la application en el atributo AndroidManifest.xml android: name = ". App".

<!-- other xml stuff --> <application ... android:name=".App"> <!-- yet another stuff like nextline --> <activity ... /> </application>