2011-02-05 26 views
7

przy użyciu było naprawdę dobre i działa, ale działa po kliknięciu przycisku Wyłącz na emulatorze.
Teraz chcę zapisać stanu i przywrócić zapisane dane, gdy przycisk poniżej stosowane:
EmulatorJak korzystać z funkcji onPause w systemie Android?

myślę, że to jest możliwe użycie OnPause() lub oOnStop(), jeśli mam rację, jak z niego korzystać ,
wystarczy, że pokaże mi źródło Java zapisywania jednej zmiennej binarnej i przywróci ją,
Dzięki.

Odpowiedz

13

Użyłbym onPause(), ponieważ onStop() nie może zostać wywołany. Szczegółowe informacje na temat cyklu życia można znaleźć w dokumencie application fundamentals.

Aby zapisać i przywrócić wartość boolowską, użyłbym SharedPreferences. Na data storage page znajduje się przykład kodu, który pokazuje, jak zapisać i przywrócić wartość logiczną. Używają one onCreate() i onStop(), ale będę używał onResume() i onPause(), z powodów, o których już wspomniałem.

0

można po prostu zastąpić onPause() w swoim działaniu, powiedz activtyA, gdy przechodzisz do innej aktywności, powiedz activityB i przesuń onResume() kiedy wrócisz do activityA.

5

przykład:

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

miałem problemy czytania sharedPreferences po poweroff gdy zostały zapisane za pomocą . Obejście polegało najpierw na wywołaniu 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(); 
    } 
Powiązane problemy