So,
ich habe den c't-Artikel, den Gertrud K. mir empfohlen hat, studiert und bin zu folgenden Erkenntnissen gekommen:
(1) Android ist ein Betriebssystem, das auf dem Linux-Kernel 2.6 basiert und in vielen Punkten an den Betrieb mit knappen Systemressourcen angepasst wurde: wenig Hauptspeicher ("RAM"), langsamer Prozessor, wenig Massenspeicher (das ist die Festplatte beim PC - auf dem Handy bestehend aus fest installiertem internen Speicher und zusätzlich eingesetzter SD-Karte)
(2) Das vom PC her bekannte "swappen" gibt es nicht (Wenn alle gestarteten Programme zusammen mehr Hauptspeicher brauchen, als zur Verfügung steht, lagert der PC zeitweise nicht benötigte Daten aus dem RAM auf die Festplatte aus.) Das wurde so gemacht, damit ein Handy zur Not auch ohne eingesetzte SD-Karte zurechtkommt.
(3) Die Konsequenz daraus ist, dass beim Neustart einer App u.U. eine andere App beendet werden muss, um Platz im RAM zu schaffen. Android sorgt dann aber dafür, dass Nutzereingaben erhalten bleiben. Wenn ich also gerade eine Mail schreibe und parallel dazu auf eine Landkarte schauen will, wird das Mailprogramm evtl. beendet. Der Text, den ich bisher geschrieben hatte, wird aber gespeichert. Wenn ich dann zur Mail-App zurück wechsle, wird der Text wieder angezeigt. Dadurch entsteht der Eindruck, die App sei weiter gelaufen.
(4) Problem: Nur reine Texteingaben des Nutzers "überleben" den Abbruch einer App - die Auswahl in einer Klappbox (in Android "Spinner" genannt) z.B. nicht! Zumindest nicht automatisch durch Android gesteuert. Es kann aber sein, dass der Programmierer der App dafür gesorgt hat. Kann aber auch nicht. Man sollte also beim Wechseln zwischen Apps sicherheitshalber immer nochmal kontrollieren, ob alle Eingaben noch richtig sind!
(5) Eine App besteht aus mehreren Komponenten. Das sind kleine Programmbestandteile, die innerhalb der App bestimmte Aufgaben erfüllen. Apps können ihre Komponenten anderen Apps zur Verfügung stellen. Dadurch brauchen nicht alle einzelnen Funktionen immer wieder neu programmiert zu werden. Das spart dann auch wieder Systemressourcen im Betrieb. Eine solche Komponente läuft u.U. weiter, auch wenn die App, in der sie enthalten ist, beendet wurde, weil eine andere App diese Komponente noch benötigt. Wird eine Komponente eine längere Zeit lang von Apps nicht benötigt, wird sie automatisch von Android beendet. Das ist also ein ziemlich buntes Durcheinander, das da herrscht und niemand kann im Grunde sagen, was gerade wirklich läuft. Hintergrund für das Alles ist immer wieder der Zwang, mit knappen Systemressourcen auszukommen.
(6) Jede App läuft in einer eigenen virtuellen Maschine (VM). Das ist so etwas wie ein "simulierter Computer". Das Betriebssystem stellt für jede App einen eigenen abgeschotteten Bereich im Hauptspeicher zur Verfügung. Das gibt es auch auf dem PC. Unter Windows 7 gibt es z.B. eine VM, die einen Windows XP-Rechner simuliert. Das ist eine wunderbare Sache, wenn man alte Software, die unter Win7 nicht mehr läuft, benutzen möchte. Die unter Android benutzte VM heißt "Dalvik Virtual Machine" DVM (das ist der Heimatort des Entwicklers auf Island!).
(7) Was unter Windows eine .exe-Datei ist (also ein ausführbares Programm), ist unter Android die .dex-Datei ("Dalvik Executable Bytecode"). Das ist also das Programm, das von der DVM ausgeführt wird. Das, was unter Windows eine Installationsdatei ist (üblicherweise auch mit der Endung .exe), ist unter Android die .apk-Datei ("Android Application Package"). Darin ist die .dex-Datei enthalten und weitere Programmbestandteile (z.B. Bilder, Texte und Sound). Diese .apk-Datei kann dann also zur Installation einer App auf dem Handy benutzt werden.
(8) Unter Android gibt es wegen der beschränkten Bildschirmgröße keine Fenster wie auf dem Windows-PC. Eine App füllt also normalerweise immer den gesamten Bildschirm aus. Für den Wechsel zwischen Apps gibt es daher drei Mechanismen, die über zwei Knöpfe auf dem Handy gesteuert werden ("Back" und "Home"):
(a) Der "Back"-Knopf ersetzt den aktuellen Bildschirminhalt durch den zuvor angezeigten. Standardmäßig gehen dabei eingegebene Daten verloren - es sei denn, der Entwickler der App hat durch entsprechende Programmierung dafür gesorgt, dass diese gerettet werden und beim erneuten Aufruf des Bildschirms wieder zur Verfügung stehen.
(b) Ein KURZER Druck auf dem "Home"-Button zeigt den "Home"-Bildschirm an, wo der Nutzer eine neue App starten kann.
(c) Ein LANGER Druck auf den "Home"-Button zeigt eine Liste aller kürzlich aktiven Apps an. Davon kann der Nutzer eine auswählen. Sie wird dann u.U. inklusive der zuvor eingegebenen Daten wieder angezeigt, so dass es für den Nutzer so aussieht, als sei die App die ganze Zeit über weiter gelaufen - obwohl sie in Wirklichkeit bereits beendet wurde! (inkl. Rettung der zuvor eingegebenen Daten!)
(9) Aufgrund dieses ausgefeilten Ressourcenmanagements von Android kann eine App prinzipiell beliebig viele Systemressourcen anfordern. Android managed das dann schon. Das stellt aber hohe Anforderungen an eine sorgfältige Programmierung! Viele Programmierer sind nicht so sorgfältig und gehen schlampig mit den SCHEINBAR unbegrenzt zur Verfügung stehenden Systemressourcen um. Das ist dann der Augenblick für die sog. Task-Manager, die auf vielen Handys installiert sind. Sie dienen dazu, ressourcenfressende Apps "gewaltsam" zu beenden (vgl. den Task-Manager auf dem PC!). Aus dem zuvor Gesagten geht ganz klar hervor, dass diese Task-Manager bei sorgfältiger Programmierung der Apps eigentlich überflüssig wären!
MfG
A*
PS: Ich bitte die Experten darum, meinen Text hier zu ergänzen bzw. zu korrigieren, wenn ich etwas falsch oder unvollständig dargestellt habe!
— geändert am 17.07.2012, 08:49:47