Java Reference
In-Depth Information
Sollte jetzt durch die zahlreichen Änderungen etwas Verwirrung entstanden sein, so ver-
weise ich nochmals auf den Quellcode, der von der Web-Seite zu diesem Buch bezogen
werden kann.
1 6 .5 .4 Variationen
Wie man sich mit Hilfe von Log-Ausgaben (s. Abschnitt 16.6) leicht überzeugen kann, lau-
fen alle Methoden der Klassen Activity1 und Activity2 im selben Prozess und werden auch
alle von demselben Thread ausgeführt. Dabei handelt es sich um den Main-Thread, der in
Android die Rolle des aus Swing bekannten Event-Dispatching-Threads hat (also insbeson-
dere auf die grafi sche Benutzeroberfl äche zugreifen darf). Durch eine einfache Konfi gura-
tionsänderung kann man erreichen, dass sich das Activity1- und Activity2-Objekt in unter-
schiedlichen Prozessen befi nden. Dazu wird in AndroidManifest.xml die Deklaration von
Activity2
<activity android:name=".Activity2">
<intent-filter> ... </intent-filter>
</activity>
zu
<activity android:name=".Activity2" android:process=":a2">
<intent-filter> ... </intent-filter>
</activity>
v e r ä ndert. Im Android-Debugger DDMS (Dalvik Debug Monitor Server) kann man erken-
nen, dass bei der Ausführung der Anwendung zunächst ein Prozess mit dem Namen java-
comp.android.activities vorhanden ist. Klickt man auf den Button in Activity1, so wird ein
neuer Prozess mit dem Namen javacomp.android.activities:a2 erzeugt. Aus Sicht eines Nut-
zers ist allerdings kein Unterschied erkennbar.
Die beiden Activities könnten auch auf zwei unterschiedliche Anwendungen aufgeteilt wer-
den, wobei man dann einen impliziten Intent verwenden sollte. Auch in diesem Fall würden
sich die Activities in unterschiedlichen Prozessen befi nden. Und auch in diesem Fall ergibt
sich aus Sicht einer Benutzerin keine erkennbare Änderung.
Es ist sogar möglich, dass man während der Anzeige von Activity2 über den DDMS-Debug-
ger den Prozess für Activity1 zwangsbeendet. Wenn man in Activity2 den Zurück-Button
drückt, sieht man selbst dann keinen Unterschied (mit der Ausnahme, dass es ein klein
wenig länger dauert, bis Activity1 wieder erscheint). Sogar der zuvor in Activity1 einge-
tippte Text steht wieder im Eingabefeld. Dieses Verhalten wurde in Abschnitt 16.2 bereits
beschrieben: Android kann aus Ressourcenknappheit jederzeit laufende Prozesse beenden,
ohne dass dies den Nutzern auff ällt. Das Beenden von Prozessen kann man probehalber
auch mit Hilfe des Debuggers erreichen.
Das beschriebene Verhalten wird dadurch erreicht, dass in Android im Rahmen des Lebens-
zyklus der Activities (s. 16.6) der Zustand der Standard-Interaktionselemente gespeichert
wird. Bei der Wiederherstellung wird der gespeicherte Zustand dann beim Neuaufbau der
Oberfl äche zur Initialisierung der Elemente verwendet. Wenn man eigene Interaktionsele-
mente entwickelt, muss man selbst für das Abspeichern und Wiederherstellen sorgen.
 
Search WWH ::




Custom Search