1. Möchtest Du unser Team im Android OS-Bereich unterstützen? Details dazu findest du hier!
  2. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Hauptspeicher und Multitasking

Dieses Thema im Forum "Android Allgemein" wurde erstellt von Hagbard235, 12.09.2009.

  1. Hagbard235, 12.09.2009 #1
    Hagbard235

    Hagbard235 Threadstarter Android-Experte

    Beiträge:
    481
    Erhaltene Danke:
    60
    Registriert seit:
    09.06.2009
    Mal ne Frage an die, die etwas tiefer in der Technik stecken:

    Wann wird ein Programm beendet? Ich habe verstanden, das es beendet wird, sobald der Speicher von einem anderen Programm gebraucht wird. Wie stellen jetzt aber Programme wie TrackMyLife sicher, dass sie auch wirklich aktiv bleiben? Und was passiert, wenn mehrere Programme solche "Immerläufer" sind, wie Musikplayer, Navi usw. usw.
     
  2. Temar, 13.09.2009 #2
    Temar

    Temar Erfahrener Benutzer

    Beiträge:
    214
    Erhaltene Danke:
    14
    Registriert seit:
    25.06.2009
    Hauptsächlich wenn der Speicher benötigt wird.

    Sie verwenden Services, die automatisch wieder gestartet werden können sobald wieder genug Speicher zur Verfügung steht. Darüberhinaus können sich die Services auch mit dem AlarmManager selbst wieder starten.

    Dann wird der älteste Prozess abgeschossen. Programme deren Activity gerade angezeigt wird, werden nicht abgeschossen. Es wird also nicht auf einmal dein Navi beendet, nur weil sich ein Hintergrundprozess wieder starten will.
     
  3. Hagbard235, 13.09.2009 #3
    Hagbard235

    Hagbard235 Threadstarter Android-Experte

    Beiträge:
    481
    Erhaltene Danke:
    60
    Registriert seit:
    09.06.2009
    Mmmh, aber so richtig eindeutig ist es für einen Entwickler dann nicht, oder??

    Wenn ich z.B. Navi laufen habe, Musik im Hintergrund und einen Radar-Warner, wir im Zweifelsfall genau das falsche beendet, obwohl keins davon beendet werden soll.

    Klar, ne Zwickmühle, denn der Speicher ist begrenzt, aber dann würde ich bei Speichermangel es gerne wissen und selber entscheiden..... aber was solls, an diesen Basics kann man ja eh nicht drehen.
     
  4. Temar, 13.09.2009 #4
    Temar

    Temar Erfahrener Benutzer

    Beiträge:
    214
    Erhaltene Danke:
    14
    Registriert seit:
    25.06.2009
    Nein und das ist auch gut so. Für jeden Entwickler ist natürlich das eigene Programm das wichtigste und würde es eine Möglichkeit geben dafür zu sorgen, dass das Programm nicht beendet wird, dann hättest du als User bald ständig 20 Hintergrundprozesse laufen.

    Es ist schlechter Stil wenn man Programme so programmiert, dass sie ständig laufen. Das lässt sich zwar nicht immer vermeiden (Musikplayer) aber generell sollte man den AlarmManager verwenden und den Service nur dann starten lassen, wenn er auch wirklich was macht.

    Naja, das gar keins beendet wird geht ja nicht, weil der Speicher aus. Dein Navi wird nicht beendet, weil es eine Activity auf hat - also gerade etwas auf dem Bildschirm ausgibt. Somit fällt die Entscheidung zwischen Musikplayer und Radarwarner. Je nachdem welcher von den beiden länger läuft, der wird dann beendet.

    Doch. Das Programm, auf das du am ehesten verzichten kannst, das startest du einfach zuerst.
     
  5. Hagbard235, 13.09.2009 #5
    Hagbard235

    Hagbard235 Threadstarter Android-Experte

    Beiträge:
    481
    Erhaltene Danke:
    60
    Registriert seit:
    09.06.2009
    Das wäre im meinem Fall natürlich die Musik, denn das der Radarwarner ausgeht wäre ja gefährlicher ;-) aber wenn man zwischendurch die Musik wechselt wird wohl wahrscheinlich die Zeit für den Player zurückgesetzt. Von daher hab ich doch keine Chance. Was mich besonders stört, wenn ich zwischendurch nur kurz andere Programme öffne schliessen sich ggf. wichtige andere. Klick ich also kurz auf den Browser oder auf ein anderes Programm gehen ggf. mein Radarwarner oder Musikplayer zu und ich kann es nicht beeinflussen. Ein Taskmanager sollte eigentlich schon standard sein.
     
  6. miracle2k, 13.09.2009 #6
    miracle2k

    miracle2k Android-Hilfe.de Mitglied

    Beiträge:
    89
    Erhaltene Danke:
    15
    Registriert seit:
    03.07.2009
    Was Temar schreibt ist prinzipiell richtig, allerdings ist es im Detail doch noch um einiges komplizierter. Insbesondere würde ich mich nicht zu sehr auf einem Timer, der zurückgesetzt wird, aufhängen. Viel zu viele andere Faktoren spielen noch eine Rolle.

    Entsprechender Quellcode findet sich z.B. hier:

    http://www.google.com/codesearch/p?...rnel.org/platform/frameworks/base.git&l=11228

    Solange es dir nicht tatsächlich passiert halte ich es für unnötig sich darüber sorgen zu machen.

    In der Praxis gibt es auch zwei verschiedene Wichtigkeitsgruppen von Services. Dein Musikplayer verwendet setForeground(), womit er, vereinfacht gesagt, genauso wichtig ist wie ein Programm das im Vordergrund läuft.

    Dein Radarwarner, auf der anderen Seite, wird möglicherweise kurzzeitig beendet, aber - sofern er korrekt programmiert ist - automatisch wieder gestartet sobald genug Speicher zur Verfügung steht. Das ist hoffentlich nicht so schlimm, wenn er mal für kurze Zeit nicht läuft. Falls doch, müsste er eben auch setForeground() verwenden. Dann muss halt wieder ein anderes Programm dran glauben. Irgendwann ist halt Ende mit Speicher.

    Ich verstehe auch nicht wieso du das manuell managen möchtest. Willst du wirklich alle drei Minuten gefragt werden "Welches Programm möchten sie nun beenden"?
     
  7. Hagbard235, 13.09.2009 #7
    Hagbard235

    Hagbard235 Threadstarter Android-Experte

    Beiträge:
    481
    Erhaltene Danke:
    60
    Registriert seit:
    09.06.2009
    Eher umgedreht, ICH möchte (nicht das Programm) sagen könne, welche Anwendung mir wichtig ist und das diese z.B. nicht oder möglichst spät geschlossen wird. Dann hätte ich ja auch in der Hand was ich an Speicher "verbaue" ;-)
     
  8. JeZ, 15.09.2009 #8
    JeZ

    JeZ Android-Hilfe.de Mitglied

    Beiträge:
    57
    Erhaltene Danke:
    3
    Registriert seit:
    07.09.2009
    Also braucht man eigentlich keinen Taskmanager um Akku zu sparen
    oder Geschwindigkeit zu gewährleisten, oder sehe ich das falsch?
     
  9. Hagbard235, 15.09.2009 #9
    Hagbard235

    Hagbard235 Threadstarter Android-Experte

    Beiträge:
    481
    Erhaltene Danke:
    60
    Registriert seit:
    09.06.2009
    Nur indirekt, du kannst mit einem Taskmanager natürlich eine Anwendung, die viel Ressourcen verbraucht, dedizierter und garantierter Abschiessen, z.B. eine Anwendung die viel CPU oder WLAN oder oder oder benutzt. Wenn der Speicher dann frei ist, muss der PDA im Falle einer neuen Anwendung auch nicht erst alte beendend, sondern hat den Speicher gleich zur Hand, von daher beschleunigt ein Taskmanager schon, praxistauglich ist es aber eher weniger.
     
  10. Lubomir, 18.09.2009 #10
    Lubomir

    Lubomir Android-Lexikon

    Beiträge:
    1,311
    Erhaltene Danke:
    194
    Registriert seit:
    26.03.2009
    Problem mit sich beendende Programme weil zu wenig Speicher?

    Lösung: Swap aktivieren auf ner möglichst schnellen Speicherkarte. Schon hat man die Möglichkeit deutlich mehr Programme auszuführen ohne dass diese dann gekillt werden.
     

Diese Seite empfehlen