2011-02-05 19 views
7

utilizando onSaveInstanceState(Bundle ..) and onRestoreInstanceState(Bundle ..)
fue realmente bueno y funciona, pero está funcionando al hacer clic en el botón Desactivar en el emulador.
Ahora, quiero guardar el estado y restaurar los datos guardados cuando está por debajo de los botones utilizados:
Emulator¿Cómo usar onPause con Android?

creo que es posible utilizar OnPause() o oOnStop(), si estoy en lo cierto, ¿Cómo usarlo ,
, será suficiente para mostrarme el origen de Java para guardar una variable booleana y restaurarla,
Gracias.

Respuesta

13

Yo usaría onPause(), ya que no se garantiza que se llame a onStop(). Consulte application fundamentals para obtener detalles sobre el ciclo de vida.

Para guardar y restaurar un booleano, usaría SharedPreferences. Hay un ejemplo de código en el data storage page que muestra cómo guardar y restaurar un booleano. Usan onCreate() y onStop(), pero yo usaría onResume() y onPause(), por las razones que ya he mencionado.

0

puede anular onPause() en su actividad decir ACTIVTYA cuando está navegando hacia otra actividad, decir activityB y anular onResume() cuando vuelve a la activityA.

5

el ejemplo:

public class Calc extends Activity { 
public static final String PREFS_NAME = "MyPrefsFile"; 

@Override 
protected void onCreate(Bundle state){ 
    super.onCreate(state); 
    . . . 

    // Restore preferences 
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
    boolean silent = settings.getBoolean("silentMode", false); 
    setSilent(silent); 
} 

@Override 
protected void onStop(){ 
    super.onStop(); 

    // We need an Editor object to make preference changes. 
    // All objects are from android.context.Context 
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putBoolean("silentMode", mSilentMode); 

    // Commit the edits! 
    editor.commit(); 
} 

}

12

que tenía problemas para leer sharedPreferences después PowerOff cuando se almacenaron utilizando . La solución fue llamar primero al clear().

public static final String PREFS_NAME = "MyPrefsFile"; 

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

     SharedPreferences settings = getSharedPreferences(PREFS_NAME,0); 
     SharedPreferences.Editor editor = settings.edit(); 
     // Necessary to clear first if we save preferences onPause. 
     editor.clear(); 
     editor.putInt("Metric", mMetric); 
     editor.commit(); 
    }