Weitere Aktivitätsereignisse unter Android
»onPause()«
Das Betriebssystem ruft »onPause()« auf, bevor eine Aktivität beendet wird. Dort haben wir die Gelegenheit, alle Informationen, welche bei der Reinkarnation der Aktivität wiederverwendet werden sollen, in eine Präferenz zu schreiben.
In einer früheren Lektion haben wir in einer ähnlichen Situation »onSaveInstanceState« verwendet. »onSaveInstanceState« wird aber nur aufgerufen, wenn eine Aktivität vorübergehend abgebaut wird und zu erwarten ist, daß sie gleich wieder aufgebaut wird. »onSaveInstanceState« wird nicht aufgerufen, wenn der Benutzer die Aktivität mit der Zurück -Taste verläßt.
»onResume()«
Das Betriebssystem ruft »onResume()« auf, nachdem die Aktivität wiederhergestellt wurde – es handelt sich hierbei praktisch um das Gegenstück zu »onPause()«. »onResume()« wird auch beim ersten Start einer Aktivität aufgerufen, nicht nur bei einer Wiederherstellung. Deswegen darf »onResume()« nicht voraussetzen, daß zuvor schon einmal »onPause()« aufgerufen wurde.
Verwendung der Ereignisse für Präferenzpersistenz
In dem folgenden Programmfragment steht »GETVALUE« für einen int-Ausdruck, welcher den zu sichernden bisherigen int-Wert enthält, »SETVALUE« für ein Programmstück, welches den Wert des dahinterstehenden Ausdrucks an die gewünschte Stelle schreibt (»SETVALUE« kann dazu auch der Name einer Methode sein).
- Speichern in einer Präferenz
@java.lang.Override protected void onPause()
{ super.onPause();
final android.content.SharedPreferences preferences
= android.preference.PreferenceManager.getDefaultSharedPreferences
( ( android.content.Context )this );if( preferences != null )
{ final android.content.SharedPreferences.Editor editor
= preferences.edit();if( editor != null )
{ editor.putInt( "", GETVALUE );
editor.apply(); }}}- Lesen aus einer Präferenz
@java.lang.Override protected void onRestore()
{ super.onRestore();
final android.content.SharedPreferences preferences
= android.preference.PreferenceManager.getDefaultSharedPreferences
( ( android.content.Context )this );SETVALUE( preferences.getInt( "", 0 )); }
Wenn mehrere Werte in einer Präferenz gespeichert werden sollen, so sollte an Stelle von »""« für jeden einzelnen Wert ein individueller Name verwendet werden.
put-Methoden und get-Methoden, wie beispielsweise »putInt«, stehen mit naheliegenden Namen auch für verschiedene andere Datentypen (für andere elementare Datentypen wie »long« und für »java.lang.String«) zur Verfügung.
Die von uns oben verwendete Methode »apply()« schreibt die Daten asynchron. Die alternative Methode »commit()« würde die Daten synchron speichern und somit den UI-Ablauf blockieren, sie würde aber einen boolean-Rückgabewert liefern, der ein Scheitern mit dem Wert »false« melden könnte.