Wird das RAM knapp? Von Taskkillern und anderen bösen Buben

  • Antworten:94
Izzy
  • Forum-Beiträge: 6.929

08.11.2010, 11:11:09 via Website

Oh ja, ich höre schon die Schreie: "Taskkiller gehören verboten! Android kann das selbst!". Und gleich aus der Gegenrichtung: "Taskkiller muss man haben, mein System läuft jetzt viel flüssiger!".

Wer hat nun Recht? Beide. Keiner. Denn hier gibt es kein einfaches Schwarz und Weiß. Sicher ist jedoch: Wer nicht weiß, wie man eine Spritze setzt, sollte sich nicht als Arzt ausgeben - das kann sonst gehörig in die Hose gehen. Ein guter Arzt weiß jedoch die genannte Spritze so einzusetzen, dass sie dem Patienten hilft. Ist jetzt die Spritze "böse"?

Ergo, Leute: Wisset, was Ihr tut - und Taskkiller, Autostart-Helfer, & Co. können sehr nützlich sein. Wisst Ihr es nicht - Finger weg!

Damit nun keiner denkt, ich wollte hier den Moralischen spielen, kommen wir endlich zum Thema: Nach Schauspielern bzw. Charakteren benannt (damit Ihr dabei auch etwas zum Lachen habt), möchte ich Euch verschiedene Szenarien vorstellen - anschließend könnt Ihr Euch alle ein Bild von der Materie machen. Die Allwissenden unter Euch mögen mir kleine Ungenauigkeiten vergeben - ich stecke halt nicht sooo tief in der Materie, denke aber durchaus ein gutes Grundverständnis zu haben.

Hier kommen sie also, die Szenarien:


Details dazu in den folgenden Posts.

— geändert am 08.11.2010, 12:28:30

Tibor S.Willie W.Torsten L.nicawowasGelöschter Account

Antworten
Izzy
  • Forum-Beiträge: 6.929

08.11.2010, 11:26:53 via Website

Das ist im Prinzip schonmal der richtige Ansatz - auch wenn man gerade nicht "high" ist. Und wenn man sich mit der Materie nicht auskennt, sogar der einzig richtige: Lass in dem Falle besser die Finger davon! Das Speichermanagement von Android ist nämlich gar nicht so schlecht, wie Ihr denkt.

Es ist korrekt: Nur wenige Android-Apps werden wirklich beendet, wenn Ihr sie verlasst. Der Hintergedanke dabei ist, dass sie Euch dann auch schneller wieder zur Verfügung stehen, wenn Ihr sie erneut aufruft. Also eigentlich eine gute Sache - wäre da nicht das Problem, dass unsere Mini-Computer ja nicht über unendlich viel RAM verfügen. Und jetzt fragt Ihr Euch, wie das denn zusammen passt.

Hier kommt etwas ins Spiel, was sich "Out-Of-Memory Killer" (oder kurz: OOM Killer) nennt: Wird das RAM knapp, kommt der OOM Killer zum Einsatz. Er hat da eine wirklich ausgefeilte Strategie herauszufinden, welche Prozesse gerade nicht benötigt werden, und somit Speicher freigeben können. Das jetzt im Detail zu beschreiben, führt an dieser Stelle zu weit (benutzt einfach unseren großen Bruder Google, und fragt ihn nach "OOM Killer" - er weiß die Antworten). Aber zum grundlegenden Verständnis möchte ich das mal ganz arg vereinfacht darstellen:

  1. Suche den (nächsten) Prozess, der das meiste RAM verbraucht
  2. Prüfe, ob es sich um einen Dienst handelt. Wenn ja, zurück zu 1.
  3. Prüfe, ob es sich um einen Vordergrund-Prozess handelt (also die App, mit der Ihr gerade arbeitet). Wenn ja, zurück zu 1.
  4. OK, der wird gerade nicht benötigt - töte ihn!
  5. Ist jetzt wieder genug RAM frei? Wenn nein, zurück zu 1.

Ihr seht, selbst in dieser vereinfachten Form klingt das doch schon recht schlau. Tatsächlich ist es sogar noch schlauer - in den allermeisten Fällen also vollkommen ausreichend.

Wäre da nicht dieses "gallische Dorf"... Nunja, an einer "App" vergeht sich obiger Prozess nämlich gern fälschlicherweise - und wer HTC Sense auf seinem kleinen Liebling hat, wird mir das gleich heftig bestätigen: Man will gerade aus einer App zurück zum Homescreen - und der scheint erstmal neu zu starten, was eine gefühlte Ewigkeit zu dauern scheint. Was ist hier passiert? Ganz einfach: Die "OOM Situation" ist eingetreten, während Ihr in der letzten App wart. Und die Sense UI ist nun mal, nach dem Android-System selbst, die App mit dem höchsten Speicherverbrauch! Das Android System ist ein "Service", bleibt also verschont. Die Sense-UI ist das nicht, und war außerdem gerade "im Hintergrund" - und jetzt spielt obige Liste kurz durch, und Ihr wisst Bescheid.

Fazit: Das Android Speichermanagement ist schon sehr gut - aber es gibt schon hin und wieder einmal Ausnahmen, wo ein Eingreifen des Benutzers nützlich sein kann - so er/sie denn auch mit der Materie genügend vertraut ist.

Tibor S.Gelöschter Account

Antworten
Izzy
  • Forum-Beiträge: 6.929

08.11.2010, 11:37:13 via Website

Wer hat noch nicht von ihnen gehört - den allgegenwärtigen Task-Killern? Bevor uns also jemand - wie im vorigen Post - die Sense-UI unterm Hintern wegschießt, ziehen wir doch mal eben schneller, gelle? Einfach alles abschießen, was sich bewegt - und Ruhe ist! Da sollte doch dann genügend RAM frei sein?

Jo, das ist wirklich Rambo-Niveau: Klar ist danach genug RAM frei. Aber wie bei "Erst schießen - dann fragen", hat man sich hier auch gleich wichtiger Informanten entledigt. Dieses Vorgehen ist grundlegend falsch! Aber das wisst Ihr ja schon alle, gelle? :grin:

Im schlimmsten Falle hat sich Eure Situation nach diesem MG-Feuer sogar noch verschlechtert. Nicht nur, dass jetzt alle Apps, die Ihr aufrufen wollt, alles neu laden müssen (was Zeit braucht) - hin und wieder kann es nun passieren, dass sie "nicht mehr ganz rund laufen". Weil es durchaus auch Abhängigkeiten geben kann!!! So kann ein Prozess (den Ihr jetzt gerade mit gegrillt habt) einen anderen (den Ihr jetzt gerade benutzen wollt) mit essentiellen Informationen beliefern - oder eben nicht mehr, da er ja nicht mehr läuft. Sowas gibt es unter Android z.B. als "Broadcast" System: Eine App registriert einen "Listener", weil sie über bestimmte Dinge informiert werden möchte. Sobald der zugehörige "Broadcaster" nun also Informationen ausspuckt, informiert Android diesen "Listener" darüber.

Auch wieder eine vereinfachte Darstellung, klar. Aber das soll Euch deutlich machen, dass man sich schon ein wenig im System auskennen sollte, bevor man in selbiges eingreift.

Fazit: Böse, böse, böse!!! Musst nicht Thun,fisch!!!

Tibor S.Gelöschter Account

Antworten
Izzy
  • Forum-Beiträge: 6.929

08.11.2010, 11:50:58 via Website

Hm, das klingt schon etwas besser: Erst die "guten Jungs (und Mädels)" in Sicherheit bringen - und dann der Roundhouse-Kick für alles, was noch übrig ist.

Viele Task-Killer bringen eine sogenannte "Whitelist" ("weiße Liste" => Ausschlussliste) mit. Was man hier einträgt, wird "geschützt" - allerdings nur vor dem Task-Killer selbst, diese Liste hat keinen Einfluss auf den weiter oben genannten "OOM Killer". Wenn man nun hier richtig sortiert, sollte doch eigentlich alles in Butter sein?

Prinzipiell sollte dem so sein - vorausgesetzt, man war wirklich gründlich, und hat auch nichts vergessen. Auf jeden Fall besser als der Rambo-Mode, wohl wahr. Aber gut? In den seltensten Fällen. Warum? Na, lies nochmal den Dude-Mode oben - es gibt schon gute Gründe dafür, warum Prozesse im System "liegen bleiben". Und vor jeder Betätigung des "Kill-Knopfes" sollte man sich wirklich nochmal vergewissern, ob da nicht vielleicht doch noch was übersehen wurde. Nach jeder Installation einer neuen App gilt es zu überdenken, ob die "Whitelist" aktualisiert werden muss. Klar, wirklich kaputt machen kannst Du hier nix - schlimmstenfalls musst Du halt Dein Handy neu starten. Sofern es sich hier nicht um einen aggressiven Task-Killer handelt, der automatisch aus dem Hinterhalt... äh, Hintergrund... Aber das sollte eigentlich jedem von Euch klar sein.

Wesentlich besser wäre da eine "Blacklist" - also eine "Einschluss-Liste": Nur Prozesse, die explizit benannt wurden, dürfen auch gegrillt werden - sofern sie - oops, was ist denn im Vordergrund, wenn der Kill-Knopf manuell betätigt wird? OK, also ohne "sofern sie". Es sei denn, dieser Killer läuft - wie etwa Speicher-Beschleuniger - im Hintergrund. (Nein, das war jetzt keine Empfehlung - aber auch keine Nicht-Empfehlung. In diesem Thread geht es mir nur um die Kriterien, die Ihr beachten solltet).

Fazit: Naja - unter ganz gewissen Kriterien... in bestimmten Situationen... könnte das sinnvoll sein. Wiederum: Sofern man weiß, was man tut.

Nachtrag: Was so ein "Kill-All" mit "Whitelist" bewirken kann, durfte ich gerade unfreiwillig erfahren: Da bot ein Task-Manager ein Widget an, welches freies RAM anzeigte. In der Erwartung, dass ein Antippen des Widgets nun die App öffnen würde - löste ich dummerweise den "Kill-All" aus. Beeindruckende 100MB zusätzlicher freier Speicher im RAM! Dummerweise taten nun einige Widgets nicht mehr (da ich kein Freund von Kill-All bin, hatte ich natürlich die Whitelist nicht entsprechend bearbeitet). Und während ich meine RSS-Feeds las, poppte dann auch noch das "Force-Close" einer anderen App auf...

— geändert am 14.11.2010, 12:57:17

Tibor S.nicaGelöschter Account

Antworten
Izzy
  • Forum-Beiträge: 6.929

08.11.2010, 12:20:05 via Website

Oh ja: "Yippieayeh, motherf****". Genau. Aber "langsam sterben", damit bist in diesem Falle DU gemeint. Denn solltest Du wirklich bis hierhin durchgehalten haben, kommt jtzt erst richtig Arbeit auf Dich zu.

Doch zunächst einmal meinen Glückwunsch, dass Du es bis hierher geschafft hast! Das zeigt: Du bist bereit, Dich ernsthaft mit der Materie auseinander zu setzen. Da bin ich doch gern bereit, Dir ein paar Tipps zu geben. Richte Dich aber darauf ein, dass die Ausführung mehr als nur ein paar Minuten benötigen wird - und nicht einfach mit "installier Dir dieses App" getan ist. Nein, ganz im Gegenteil...

Gehen wir doch dem Übel mal an die Wurzel. Nicht "Wie mache ich auf die Schnelle mal RAM frei" - sondern viel besser: "Wie sorge ich dafür, dass das RAM gar nicht erst zugemüllt wird"! Dieser Ansatz mag zwar am Ende nicht so viel RAM freischaufeln wie der Chuck-Norris-Mode oder gar der Rambo-Mode. Dafür ist das Ergebnis aber ein wenig beständiger!

Dazu benötig Ihr im Prinzip gar keine zusätzliche App - für den Anfang genügen die Bordmittel. Es geht nämlich ums Ausmisten:

Mit der Zeit haben sicher alle von uns einige Apps "mal ausprobiert". Und einige davon sind immer noch installiert - obwohl wir sie schon seit gefühlten Jahren nicht mehr benutzt haben. Wozu also an ihnen festhalten? Also:

Schritt 1: Den App-Drawer öffnen, und schauen, was so alles installiert ist. Notieren, was davon weg kann.
Schritt 2: Einstellungen->Anwendungen->Anwendungen verwalten, und nicht mehr benötigtes löschen!

So manches Programm ist nämlich der Meinung, sich mal eben gleich nach dem Booten im Hintergrund zu starten. Was manchmal sinnvoll - aber hin und wieder durchaus fragwürdig ist (etwa bei Apps wie com.appspot.swisscodemonkeys.jokes, was sich bei mir in einigen "Auto-Start-Hooks" (ja, es gibt eine ganze Reihe davon!) eingenistet hatte).

Nebeneffekt: Es wird auch wieder "interner Speicher" frei :grin:

Wenn Ihr dies vollbracht habt, habt Ihr schon einiges gewonnen. Aber von so mancher "Altlast" fällt es einem schwer, sich zu trennen - warum auch immer. Das ist wohl etwas, was wir als "Jäger, Sammler und Fischer"-Mentalität kennen: Einmal gejagtes wird gesammelt, und das Löschen dann immer wieder verschoben - auch wenn man die Dinge nicht wirklich braucht. Schaut Euch nur mal auf der Festplatte Eures PC um...

Wenn das jetzt noch nicht gereicht hat, kannst Du auch noch "etwas tiefer graben". Dafür solltest Du Dich dann aber mit Deinem Android-System auch schon ein wenig auseinander gesetzt haben - und genau wissen, was Du tust:

Da wären dann nämlich noch die Apps, die Du nur sehr, sehr selten benutzt - aber doch noch hin und wieder benötigst. Auch diese haben sich evtl. in irgendwelche Auto-Starts eingetragen. Was vielleicht prinzipiell durchaus sinnvoll und nützlich ist - im konrekten Fall aber nicht unbedingt erwünscht. Auch hier ein konkretes Beispiel: eBay - kaufen & verkaufen wird auch nach dem Booten gestartet - damit Du keine auslaufende Auktion verpasst. Logischerweise muss diese App dafür hin und wieder bei eBay nachschauen, welche Auktionen Du beobachtest. Bist Du aber nur gelegentlich dort aktiv, muss die App ja eigentlich nicht immer laufen - stattdessen könntest Du sie ja bei Bedarf starten.

Konkret geht es hier also um das Aufräumen der Auto-Start Rampen. Hierzu benötigst Du zumindest eine zusätzliche App - zu den Details nehme ich mir hier die Freiheit, auf einen passenden Thread zu verweisen.

Fazit: Diese Methode kann eigentlich nie schaden: Was nicht installiert ist, verbraucht keinen Speicher - und muss auch nicht gekillt werden.

Tibor S.nicaGelöschter Account

Antworten
Izzy
  • Forum-Beiträge: 6.929

08.11.2010, 12:27:39 via Website

Am Schluss nochmals kurz zusammengefasst:

Hier handelt es sich um ein sehr kontrovers diskutiertes Thema. Worin mir allerdings (fast) jeder zustimmen dürfte:

  • Eingriffe ins System setzen eine gute Kenntnis desselben voraus
  • Was nicht installiert ist, benötigt/belegt keine Ressourcen
  • Aufräumen (nicht benötigte Apps entfernen) schadet nicht

Daher meine Empfehlung: Der "Bruce-Willis-Mode" hat noch keinem geschadet - mistet Euer System ruhig hin und wieder aus, indem Ihr es von nicht mehr benutzten Apps befreit (Anmerkung: Ich rede hier nicht von System-Apps, die zur Entfernung root-Rechte benötigen - diese sind ein anderes Thema!). Für alles andere mein Lieblings-Zitat von Paracelsus:

Es gibt keine Gifte - nur falsche Dosierungen.

Bevor Ihr Euch also ans "große Killen" und "Autostart Bereinigen" macht: Setzt Euch mit dem System auseinander, damit Ihr wisst, was Ihr tut! Und: Ohne Hintergrund-Wissen - FINGER WEG!

Tibor S.Gelöschter Account

Antworten
Christoph S.
  • Forum-Beiträge: 180

08.11.2010, 12:51:57 via Website

Sehr gut geschrieben - warum nicht als Blog veröffentlicht? :-)

Lässt sich gut lesen

Vielen Dank!

Gelöschter Account

Antworten
Izzy
  • Forum-Beiträge: 6.929

08.11.2010, 13:02:50 via Website

Meinst Du das hier: Wird-das-RAM-knapp-Von-Taskkillern-und-anderen-boesen-Buben? Ja, das ist ein Blog :grin:

Habe beides gemacht - erst den Thread hier (an dieser Stelle auch noch in ein paar Monaten gut auffindbar, da das bestimmt ein Mod pinnen wird), und dann den Blog-Eintrag (mit kurzer Zusammenfassung und verweis nach hier). Sofern sich eine gute Diskussion entwickelt, wird obiges dann noch verfeinert - und landet am Ende u.U. auch noch im Wiki. Aller guten Dinge sind drei :lol:

Und Danke für das Lob!

Antworten
Bastian Siewers
  • Forum-Beiträge: 9.729

08.11.2010, 13:21:27 via App

Sehr cool und wirklich hilfreich für viele Anfänger.
Ich fände es cool, wenn Izzys Beiträge einen extra Bereich kriegen würde, da wenn das so weitergeht, besteht die erste Seite des "Apps" Forum nur noch aus gepinnten Beiträgen und des weiteren wären die Beiträge auch noch einfacher zu finden. Ist aber nur meine Meinung ;-)
Noch mals Izzy, sehr sehr cool gemacht ;-)

— geändert am 08.11.2010, 13:22:05

ErnstLuigi

Antworten
Benjamin Rüde
  • Forum-Beiträge: 393

08.11.2010, 13:29:06 via Website

Wow wirklich schön geschrieben. Denke dieser Thread wird mein neuer "Darauf verlinke ich bei unwissenden Task-Killernutzern"-Tread :grin:

@Evelyn habe dich erst nach Izzys Post erkannt :cold: :grin:

Antworten
Izzy
  • Forum-Beiträge: 6.929

08.11.2010, 13:40:51 via Website

Benjamin Rüde
Denke dieser Thread wird mein neuer "Darauf verlinke ich bei unwissenden Task-Killernutzern"-Tread :grin:

Ja, ein Sachverhalt, der scheinbar bereits vor 2.000 Jahren bekannt war: "...denn sie wissen nicht, was sie tun" <3

"root" ist ja auch nicht gleich "böse", nur weil ein "Unbedarfter" sich damit das System zerlegt hat...

Benjamin Rüde
@Evelyn habe dich erst nach Izzys Post erkannt :cold: :grin:

LOL... Ja, ich wollte sie kürzlich sogar benachrichtigen, dass sich da schon wieder jemand wildfremdes ihres Markenzeichens (ENTDECKT!) bedient hat. Hab auch erst ein Weilchen gebraucht um festzustellen, dass sie das selbst war! Und wieder eine alte Weisheit: "Kleider machen Leute"...

Antworten
Mirko Schenk
  • Forum-Beiträge: 25

08.11.2010, 13:47:52 via Website

Izzy
So manches Programm ist nämlich der Meinung, sich mal eben gleich nach dem Booten im Hintergrund zu starten. Was manchmal sinnvoll - aber hin und wieder durchaus fragwürdig ist (etwa bei Apps wie com.appspot.swisscodemonkeys.jokes, was sich bei mir in einigen "Auto-Start-Hooks" (ja, es gibt eine ganze Reihe davon!) eingenistet hatte).
Moooment! Wir sind hier nicht bei Windows, wo ein Programm gestartet wird und daraufhin den Speicher blockiert und die CPU mit Leerlauf-Zyklen belastet!
Und es gibt nur einen "echten" "Auto-Start-Hook".
Was hier woh eher gemeint ist: Android schickt bei bestimmten Ereignissen sogenannte "Broadcasts" und die Apps können sagen, auf welche sie reagieren wollen. Z.B. System wurde hochgefahren (der "echte Autostart"), SD rein/raus, Bildschirm an/aus, SMS empfangen, etc. Je nach Benachrichtigung passiert das nur, wenn ein laufender Dienst dafür registriert wurde oder - weitaus häufiger - immer, d.h., bei Bedarf wird die App in den Speicher geladen. Es wird dann nur die Benachrichtigung abgearbeitet, und sofern nicht z.B. ein Dienst gestartet oder weitere Benachrichtigungen eingeplant wurden, passiert danach überhaupt nichts mehr bis die App wegen Speichermangel gekickt oder wieder benötigt wird.
In den meisten Fällen ist die sinnvollste Lösung, in den Einstellungen dafür zu sorgen, dass beim "normalen" Autostart eben kein Dienst gestartet bzw. kein regelmäßige Benachrichtigungen eingeplant werden. Dann dauert halt das Hochfahren eine Nanosekunde länger und der Task erscheint in der "Taskliste" (eher Speicherbelegung) bis er vom System geputzt wurde, aber das stört nicht wirklich...
Die "Autostarts" (=Benachrichtigungs-Empfangs-Wünsche) einfach zu entfernen kann dafür sorgen, dass die Anwendungen nicht mehr richtig funktionieren - denn das System benachrichtigt diese dann auch nicht mehr, wenn sie laufen. Wie gesagt, Android macht da keinen Unterschied. Im Normalfall sollte das Abarbeiten so einer Benachrichtigung auch nicht lange dauern, und sofort danach kann Android die App ja auch schon wieder aus dem Speicher werfen.
Richtig ist aber, dass es ggf. etwas dauern kann, wenn z.B. nach "SD wurde eingesteckt" (wird auch nach einem Reboot signalisiert) 10 Apps damit loslegen die gesamte Karte nach neuen Liedern, eBooks, Navi-Karten, ... zu durchsuchen. Das ist dann einfach schlechter Programmierstil, den aber leider auch Androids systemeigene Medienbibliothek an den Tag legt.

Ach ja, und mal generell zum Speichermangel-Problem: Dass eine Anwendung wegen Speichermangel nicht starten kann, kann seit Android 2.0 überhaupt nicht vorkommen und bei älteren Versionen nur wenn der Speicher komplett voll ist mit Diensten, die von sich behaupten "Vordergrunddienste" zu sein (d.h., der Benutzer weiß, dass da was läuft, und es sollte nicht unterbrochen werden). Weil das zu oft mißbraucht wurde, können das seit Android 2.0 nur Dienste behaupten, die ein Icon in der Benachrichtigungsleiste haben, und auch diese werden mittlerweile wenn nötig "gekillt" - wenn auch erst, wenn sonst nichts mehr geht.

Das weitaus größere Problem bei Android ist der Speicherverbrauch einer App selbst. Google hat nämlich den Hauptspeicherbedarf einer App auf 16MB begrenzt (ohne den App-Code selbst, also "nur" für Objekte und Variablen), selbst wenn noch 2GB frei wären - mit 27 Bildern in HVGA-Größe (320*480*4 Byte pro Pixel) ist der erlaubte Speicher also schon voll, andere interne Daten gar nicht mitgerechnet. Bei manchen (W)VGA-Geräten wurde dieses Limit auf 24MB erhöht. Damit sollte wohl gewährleistet werden, dass das System nicht durch Apps mit Speicherloch lahmgelegt wird.
Dazu kommen noch ein paar Systembugs und hinterlistige Fallstricke, die schnell mal dafür sorgen, dass der Speicher schneller vollläuft (z.B. kein Recycling von Element-Views in ausklappbaren Listen, Referenz-Kreisschlüsse durch interne Referenzen in Android-Klassen, etc.), und schon hat man einen Absturz wegen Speichermangels obwohl doch scheinbar so viel frei ist...

Antworten
Andreas G.
  • Forum-Beiträge: 16

08.11.2010, 13:54:24 via Website

Mein Milestone hat sich mehrmals am Tag rebootet - dachte erst es wäre ein Feature bis ich den AdvancedTaskManager deinstalliert habe -> Keine Reboots mehr, RAM zu genüge vorhanden und der Akku wird auch nicht schneller leer.

MEIN(!) FAZIT: Autokill braucht kein Mensch!

Antworten
Mirko Schenk
  • Forum-Beiträge: 25

08.11.2010, 14:03:31 via Website

Ach ja, und noch eine Zusammenfassung zum Task-/Speichermanagement, dass ich demletzt in 'nem anderen Forum gepostet hab. Vielleicht hilft's ja dem ein oder anderem beim Verständnis...

- Was man in den meisten Taskmanagern sieht, sind die Anwendungen, die im Speicher liegen. Sie "laufen" aber (meistens, mehr dazu später) nicht und werden vom System entfernt, wenn es Speicher benötigt.
- Das Entfernen aus dem Speicher dauert nicht so lange wie bei Windows 3.x sondern geschieht meist unmerkbar schnell
- Eine Android-App macht nur etwas, wenn sie sichtbar ist, ein Hintergrunddienst läuft (dafür gibt's 'ne eigene Liste in den Einstellungen) oder gerade eine Nachricht (Android-Slang: "Broadcast-Intent") abgehandelt wird
- Solche Nachrichten werden z.B. nach dem Hochfahren, beim Entfernen/Einschieben einer Speicherkarte, beim Empfangen einer SMS, Ein-/Ausschalten des Bildschirms und vielen anderen Ereignissen gesendet; die Apps können angeben, welche davon sie empfangen wollen. Ist die App nicht im Speicher, wird sie dafür geladen. Außerdem können Apps zeitgesteuert, auch regelmäßig (z.B. alle 5 Minuten), "eigene" Nachrichten vom System senden lassen.
- Es gibt keine einfache Möglichkeit festzustellen, ob und wie oft eine App etwas im Hintergrund macht.
- Bis einschließlich Android 2.1 wurden beim "Killen" eines Tasks auch die von diesem angewiesenen zeitgesteuerten Nachrichten entfernt, wodurch z.B. Wecker oder Profiltools nicht mehr funktionierten. Bei Android 2.2 wurde das von Google geändert, da dieses Verhalten zu viele Probleme bereitete (v.a. durch "Autokiller").
- Es gibt seit Android 2.2 also keine Möglichkeit, über das System regelmäßige Hintergrundjobs zu beenden. Da muss man schon die Einstellungen der App anpassen oder sie deinstallieren...
- "lange Home drücken" bringt keine Taskliste, sondern die zuletzt gestarteten Apps, egal ob diese laufen bzw. im Speicher liegen oder nicht
- Es gibt derzeit keine Möglichkeit, in Android Tasks aus Anwendersicht zu verwalten, also z.B. eine Art "Alt-Tab" zwischen den Apps, die man gerade "offen hat"

Andreas G.

Antworten
Izzy
  • Forum-Beiträge: 6.929

08.11.2010, 14:23:02 via Website

@Mirko: Danke für die technischen Hintergrund-Infos! Kann ich so unterschreiben. Meine obigen Posts sind halt eher im Niveau für Anfänger angesiedelt, und gehen daher nicht so in die Tiefe.

Aber: Es gibt sehr wohl eine Möglichkeit, "Android Tasks aus Anwendersicht zu verwalten" - schau Dir einfach mal z.B. com.hz.manager.android.paid (oder in der freien Version: com.hz.manager.android) an. Dort werden Dir u.a. auch die laufenden Apps angezeigt.

Was den OOM-Killer (und damit die automatische Speicher-Bereinigung) angeht: Siehe "Dude-Mode". Funktioniert im Prinzip sehr gut - aber es gibt, wie überall, Ausnahmen. Leider kann der Anwender hier überhaupt nicht eingreifen (sonst würde ich bei mir einfach die HTC Sense UI in der Priorität hochstufen), sodass doch hin und wieder etwas gekillt wird, was nicht so glücklich ist. Suche nur mal danach - und Du wirst das Problem mit der Sense-UI zuhauf finden. Auch wenn es oftmals der einen oder anderen App angelastet wird (z.B. bei K9 Mail).

Wie beschrieben: Es gibt hier einfach keine klare Schwarz-Weiß-Abgrenzung.

Antworten
Chris Sor
  • Forum-Beiträge: 141

08.11.2010, 14:29:36 via Website

Und warum läuft es bei mir dann nicht flüssig?
Klar habe ich einiges in der Whitelist, und hatte bisher auch keine anderen Probleme, ich bekomme E-Mails, Anrufe, SMS, Spiele laufen.

Antworten
Izzy
  • Forum-Beiträge: 6.929

08.11.2010, 14:44:48 via Website

@Chris: Eine pauschale Antwort kann es da kaum geben. Das muss man meist von Fall zu Fall entscheiden - und dann natürlich konkret mit alles technischen Daten. Ohne Dein Gerät, Deine installierten Apps, gerade/immer ausgeführten Tasks, RAM Auslastung... zu kennen, kann Dir da niemand eine 100% treffende Antwort geben - und "wilde Vermutungen" werden Dir kaum helfen.

Meine obigen Posts (insbesondere der "Bruce-Willis-Mode") mögen Dir im Ansatz helfen. Alles weitere würde dann ein wenig tiefer gehen - und u.U. auch meinen Horizont überschreiten. Und wie getippst: "bei mir läuft es nicht flüssig" ist als Grundlage für eine Analyse unzureichend :grin:

Wenn ich da wirklich richtig eingearbeitet wäre, würde ich ja bezahlten Support anbieten B) (ist ja doch immer auf einen speziellen Fall anzuwenden, und jedes Mal eine - zumindest leicht - andere Situation). Aber derzeit wäre das eher anmaßend von mir. Sicher traue ich mir dabei einiges zu (und wüsste auch auf Anhieb einige Stichpunkte zu nennen) - aber bei "bezahltem Support" erwartet man auch eine garantierte Lösung. Und garantieren kann ich für nix :grin:

Antworten
nica
  • Forum-Beiträge: 1.368

08.11.2010, 16:06:15 via Website

Hallo, danke für die Beiträge.

Ich möchte nur mal ergänzen, dass das Samsung Galaxy S i9000 (und vermutlich auch das Galaxy Tab) von Samsung aus standardmäßig einen Taskmanager haben, in dem vom User aufgerufene Apps beendet werden können oder sogar der RAM bereinigt werden kann, ohne dass Probleme entstehen.

Gerade wenn man viel offen hat und es langsam wird, ist diese Methode prima.

Antworten
Heiko M.
  • Forum-Beiträge: 280

08.11.2010, 19:14:41 via Website

Ich habe auch einen Taskmanager auf meinem DHD, allerdings schiesst der nix automatisch ab sondern wenn dann mache ich das nur manuell selber. Ich habe einfach ein besseres Gefühl Abends bevor es ins Heiabettchen geht bestimmte Sachen abzuschiessen und dann in Ruhe zu schlafen.

Irgendwie verstehe ich jetzt auch nicht wirklich den Sinn von dem Multitasking, wenn APPS ja nur im RAM ruhig schlummern und keinerlei Aktivität haben wie wirkt das sich auf Multitasking aus?

Hat da einer mal eine einfache und verständliche Antwort drauf? Eventuell ist das eine etwas dumme Frage aber ich lasse mich gerne belehren :grin:

Antworten
Harlekien
  • Forum-Beiträge: 8

08.11.2010, 19:44:48 via Website

Danke für den Artikel. Nun einiges mehr klar

Antworten
Mirko Schenk
  • Forum-Beiträge: 25

08.11.2010, 20:20:23 via Website

Izzy
Aber: Es gibt sehr wohl eine Möglichkeit, "Android Tasks aus Anwendersicht zu verwalten" - schau Dir einfach mal z.B. com.hz.manager.android.paid (oder in der freien Version: com.hz.manager.android) an. Dort werden Dir u.a. auch die laufenden Apps angezeigt.
Naja, wie mans nimmt...
Ich meinte eher das "Task-Management", wie mans von Windows gewohnt ist und was z.B. bei webOS richtig gut gelöst ist: Also hauptsächlich für die Übersicht "was mache ich gerade", wo ein geschlossenes Fenster möglicherweise im Tray aktiv bleibt, aber beim Umschalten zwischen den Tasks nicht stört. Bei Android wird die Anwendung beim Killen gnadenlos aus dem Speicher geworfen, während sie bei nahezu jedem modernen Desktopsystem auch gecached wird - nur eben unsichtbar für den User. Und sobald sie auf irgendeine Nachricht reagiert hat und danach im Speicher liegt, scheint sie zu "laufen". Eigentlich bräuchte man aber eher eine Liste, die Apps vom ersten Erscheinen eines Fensters bis zum "Beenden" auflistet, egal ob sie gerade im Speicher liegt oder nicht.
Beim Verwalten der "Hintergrundjobs" dagegen bietet Android keine Möglichkeit, einzusehen, was über den "AlarmManager" eingeplant wird. (Für Fortgeschrittene: sowas wie cron oder AT, für andere: startet Aktionen zeitgesteuert.) Und das Beenden von Hintergrundjobs ist je nach App und Androidversion unmöglich oder sehr "rücksichtslos".

Leider kann der Anwender hier überhaupt nicht eingreifen (sonst würde ich bei mir einfach die HTC Sense UI in der Priorität hochstufen), sodass doch hin und wieder etwas gekillt wird, was nicht so glücklich ist. Suche nur mal danach - und Du wirst das Problem mit der Sense-UI zuhauf finden.
Tja, vor Android sind alle gleich, da werden halt bevorzugt überladene Riesenapps gekillt. Selbst wenn sie der Home-Ersatz vom Hersteller sind. ;-)

Antworten
Izzy
  • Forum-Beiträge: 6.929

08.11.2010, 20:26:20 via Website

@Harlekien: Freut mich zu lesen - Danke für das Feedback!

@Heiko: Deine Antwort ist ein klein wenig ausführlicher - und ich mache das mal an einem praktischen Beispiel. Bitte die "Werte"/"Daten" hier nicht für bare Münze nehmen, die dienen nur der Veranschaulichung. Deswegen nehme ich auch absichtlich welche, die so nicht stimmen können - aber halt anschaulicher sind:

Sagen wir, Dein Telefon hat 100MB RAM. Sagen wir weiterhin, arg übertrieben, das "Grundsystem" (also Betriebssystem plus weitere ständig benötigte Komponenten wie das Telefon-Programm (damit es auch klingelt, wenn Dich jemand anruft), SMS Empfang, etc.pp. fressen davon die Hälfte - bleiben 50MB übrig. Und jetzt nehmen wir weiter an, jede App braucht genau 10MB RAM - nicht mehr und nicht weniger (spätestens jetzt ist klar: Das ist unrealistisch. Macht aber nix).

So. Und jetzt startest Du die erste "User-App". Die muss zuerst den Code aus dem Anwendungsspeicher (ROM, interne Festplatte, SD-Karte) laden, aufbereiten, und sich im Speicher ausbreiten. Insbesondere die Karte ist da wesentlich langsamer als das RAM - sagen wir (wieder vereinfacht) Faktor 10, und unsere App braucht deshalb 10 Sekunden zum laden. Du machst was in der App, dann gehst Du zurück zum Homescreen, und startest die nächste App. Wieder besagte 10 Sekunden.

Während Du jetzt in der zweiten App bist, wird die erste bei Android nicht wirklich beendet - sondern schlafen gelegt: Sie verbraucht so zwar keinen nennenswerten Akku-Anteil, und belastet auch die CPU nicht - aber der Bereich im RAM wird (erstmal) nicht wieder frei gemacht. Du hast ja an dieser Stelle auch noch weitere 30M frei, also stört das auch nicht.

Jetzt verlässt Du App2 wieder, und brauchst erneut App1 (Erinnerung: Die hat 10 Sekunden zum laden gebraucht - beim ersten Mal). Da diese ja noch im RAM liegt, braucht sie jetzt nur noch 1 Sekunde - und Du denkst: Boah, das war jetzt fix!

Aber Du hast Recht: Mit "echtem" Multi-Tasking hat diese Beschreibung wenig zu tun. Multi-Tasking wäre eher, wenn App1 im Hintergrund weiter arbeitet (etwa eine längere Berechnung ausführt, während Du derweil in App2 Deine Mails anschaust). Das hier ist eher "TSR": App1 wartet im Hintergrund darauf, von Dir wieder aktiviert zu werden. Aber lies Dir mal den verlinkten Wikipedia-Artikel durch: Der erste Abschnitt dort (Allgemeiner Ablauf) beschreibt es eigentlich genau so.

Achja, und um zum Thema zurück zu kommen: Willst Du jetzt App5 starten, stellt das System fest: Mist, damit ist der Speicher dann aber wirklich voll! Und dann schlägt der "OOM Killer" (siehe oben) zu und schaut, welche App er jetzt am sinnvollsten aus dem Speicher (RAM) entfernt. Diese App braucht dann beim nächsten Start halt wieder 10 Sekunden - aber Du kannst einfach weiter arbeiten, ohne Dich um irgend etwas zu kümmern.

Boah... Ich hoffe, das war jetzt nicht zu lang :*)

Antworten
Izzy
  • Forum-Beiträge: 6.929

08.11.2010, 20:32:32 via Website

@Mirko: Du sprichst mir irgendwo aus der Seele. Das Konzept ist zwar irgendwie interessant - aber nicht unbedingt das, was ich mir wünschen würde. Aus meiner Sicht ist das "was für faule, die ihre grauen Zellen möglichst nicht damit belasten wollen". Nicht falsch verstehen: Auch bei Linux/Unix Systemen gibt es nämlich einen OOM-Killer - der genau das macht, was der OOM-Killer von Android auch tut. Aber hier kann ich Programme normal beenden - und der OOM-Killer kümmert sich um Ausnahmefälle, die bei Android die Regel sind.

Kurz: Ich fühle mich in dieser Hinsicht von Android bevormundet. Ich möchte die Freiheit haben zu entscheiden, ob ich ein Programm beenden - oder nur in den Hintergrund schieben möchte. Das würde mir so manchen Sense-Restart ersparen...

Antworten
Mirko Schenk
  • Forum-Beiträge: 25

08.11.2010, 20:40:14 via Website

Heiko M.
Irgendwie verstehe ich jetzt auch nicht wirklich den Sinn von dem Multitasking, wenn APPS ja nur im RAM ruhig schlummern und keinerlei Aktivität haben wie wirkt das sich auf Multitasking aus?
Multitasking ist bei Android nicht ganz trivial. Um die Ressourcen so weit wie möglich zu schonen, gibt es vier Fälle (die letzten beiden sind technisch nahezu gleich gelöst):
1. Der sichtbare Teil von Anwendungen (schimpft sich bei Android "Activities"). Dieser wird nur ausgeführt, solange die App wirklich sichtbar ist - ansonsten könnte er ja in den allermeisten Fällen ohnehin nur auf Eingaben warten, die es nie geben wird. Aufs Multitasking haben derart schlafende Apps keinerlei Einfluss, sie werden komplett ignoriert. Sie liegen nur solange wie möglich im Speicher um ggf. schneller wiederhergestellt zu werden.
2. Hintergrunddienste müssen explizit als solche programmiert werden. Sie haben auch eine "Warteschleife", die Meldungen abarbeitet, ähnlich wie Windows-Anwendungen. Wenn der Dienst aber nicht "richtig arbeitet", braucht diese üblicherweise kaum bemerkbar CPU. Störender kann schon eher sein, dass Android laufende Dienste erst killt und den Speicher freigibt, wenn dem System der Speicher ansonsten extrem knapp wird.
3. Reagieren auf bestimmte Systemereignisse. Dafür wird die App wenn nötig auch in den Speicher geladen. Abgearbeitet wird aber nur der Ereignis-Handler, ein richtiger "Programmstart" muss das nicht sein. Es kann z.B. einfach ein Flag gesetzt werden, dass beim nächsten Start nach dem Einschieben einer (neuen?) SD deren Inhalt kurz geprüft werden soll, oder auch gar nichts geschehen. Es kann aber in Einzelfällen auch das volle Programm loslegen, z.B. wenn ein Medienplayer nach dem Druck auf eine Headset-Taste startet.
4. Eingeplante Ereignisse. Üblicherweise plant eine App Benachrichtigungen an sich selbst ein, die um eine bestimmte Zeit (z.B. Wecker) oder regelmäßig (z.B. Tweet-Check alle 15 Minuten) abgearbeitet werden (wahlweise auch, wenn der Bildschirm ausgeschaltet ist). Theoretisch wäre es aber auch möglich, dass z.B. eine Twitter-App den Standard-Musikplayer alle 10 Minuten startet.

Hoffe, das macht's etwas verständlicher...

Antworten
Mirko Schenk
  • Forum-Beiträge: 25

08.11.2010, 20:46:14 via Website

Izzy
Kurz: Ich fühle mich in dieser Hinsicht von Android bevormundet. Ich möchte die Freiheit haben zu entscheiden, ob ich ein Programm beenden - oder nur in den Hintergrund schieben möchte. Das würde mir so manchen Sense-Restart ersparen...
Das (und das "User-Taskmanagement") habe ich hier auch versucht, den Leuten von Google klar zu machen. Ich befürchte aber, das war mit deren Denkweise inkompatibel... Naja, vielleicht war's wenigstens ein Schubs in die richtige interne Diskussionsrichtung.

Die Antwort auf Heikos Post hatte ich geschrieben, während du deinen verfasst hast. Ich glaube, zusammen passt das ganz gut - Regelfall und Ausnahmen... :)

Antworten
Izzy
  • Forum-Beiträge: 6.929

08.11.2010, 21:18:58 via Website

Mirko Schenk
Das (und das "User-Taskmanagement") habe ich hier auch versucht, den Leuten von Google klar zu machen.

Ich habe nach den ersten zwei Seiten aufgegeben: Mein Hals wurde dick, ein würgereiz setzte ein... Ich kenne da so manche App, bei der ich mich mit der "Back" Taste totdrücken kann - weil sie zunächst genau das tut: Immer einen Bildschirm zurück. Klar, ich könnte einfach den "Home" Button drücken - aber ich will die App beenden, und nicht den Task wechseln! Wie erfrischend sind da die handvoll Apps, die <Menü><Exit> anbieten. Auch wenn davon die Hälfte einen "Exit" auch nur vorgibt, weil Android den ja nicht vorgesehen hat...

Mirko Schenk
Ich befürchte aber, das war mit deren Denkweise inkompatibel...

LOL! Ja, genau. Ich bin auch erstmal "dagegen" - bin auch nicht "kompatibel". Wir zwei sind halt die Minorität, die sich gefälligst unterzuordnen hat. Eine weitere Minorität kümmerts nicht - und die Majorität begreifts nicht (bzw. nicht wirklich, weshalb es denen auch egal ist). Der Symbian-Vergleich im von Dir genannten Thread passt da: Long live the Dinosaurs - like it or not...

Aber wir schweifen ab...
Mirko Schenk
Naja, vielleicht war's wenigstens ein Schubs in die richtige interne Diskussionsrichtung.

Die Hoffnung stirbt zuletzt - wenn auch vor Chuck Norris...

Mirko Schenk
Die Antwort auf Heikos Post hatte ich geschrieben, während du deinen verfasst hast. Ich glaube, zusammen passt das ganz gut - Regelfall und Ausnahmen... :)

Yupp, denke ich auch.

Antworten
Chris Sor
  • Forum-Beiträge: 141

09.11.2010, 02:20:41 via Website

Also wer mir in Essen (NRW) ein Milestone 2.1 zeigt das direkt nach dem booten schnell ist, dann... hm, bin ich verwundert xD
Zu den restlichen Punkten muss ich zustimmen, Android managed das selber, und die meisten Apps die gelistet sind nehmen höchstens etwas Ram, nur CPU Time wäre wirklich schlimm^^ Was ich zT noch beobachte ist das der akku schneller leergesaugt wird - wo es aber sicher oft einen bestimmtn übeltäter gibt xD

Antworten
Mirko Schenk
  • Forum-Beiträge: 25

09.11.2010, 08:19:58 via Website

Chris Sor
Also wer mir in Essen (NRW) ein Milestone 2.1 zeigt das direkt nach dem booten schnell ist, dann... hm, bin ich verwundert xD
Sollte kein großes Problem sein. Einfach nicht allzu viele Apps installieren, die nach dem Booten irgendwas aufwendigeres treiben, dann noch die SD nicht übermäßig vollstopfen, damit Androids Medien-Indizierung nicht ewig läuft, und schon ist das Gerät nach dem Booten genauso schnell oder langsam wie nach einem "Komplettkill". Vermutlich sogar minimal schneller, weil manche Apps noch im Speicher liegen statt neu geladen werden zu müssen.

Was ich zT noch beobachte ist das der akku schneller leergesaugt wird - wo es aber sicher oft einen bestimmtn übeltäter gibt xD
Den Akku ziehen dann aber die Apps, die wirklich etwas machen - ob nun im Hintergrund oder nicht (v.a. Spiele saugen oft gewaltig...).
Allerdings ist das mit dem Akkuverbrauch generell sehr undurchsichtig. Da scheint's oft auch von den Treiber-Implementierungen der Geräte abzuhängen - ich könnte mir vorstellen, dass v.a. SD-Leser und die Steuerung der Prozessorgeschwindigkeit große Unterschiede ausmachen. Da wird in den Foren oft diesselbe App mal als übelster Akkufresser bezeichnet, während andere nicht den geringsten Mehrverbrauch feststellen können.

Antworten
Heiko M.
  • Forum-Beiträge: 280

09.11.2010, 10:38:47 via App

Kurz nochmal zum Thema Multitasking und App im Hintergrund:

Nehmen wir mal an ich lade eine vollgepackte Webseite, das Laden dauert mir zu lange und ich drücke die Hometaste um in der Zeit schnell das Wetter anzusehen, was passiert nun im Hintergrund mit dem Laden der Webseite?

Kann man das wirklich Multitasking nennen?

Mir wiederspricht es auch das ich Apps nicht einfach so beenden kann, ich mag die Bevormundung von Android auch nicht wirklich und deshalb nutze ich schonmal einen Taskkiller.

Ich kann mit dem Android "Multitasking" nicht wirklich etwas anfangen.

— geändert am 09.11.2010, 10:45:12

Antworten
Izzy
  • Forum-Beiträge: 6.929

09.11.2010, 10:53:09 via Website

Eben das meinte ich ja: Damit die App im Hintergrund "weitermacht", muss sie wohl als Service gekennzeichnet sein. Wäre jetzt aber jede App als Service gekennzeichnet, hätte der OOM-Killer ein kleines Problem... Sie Wikipedia-Artikel: Der aktuelle Zustand des Programms wird "eingefroren", und auf Anfrage wieder "aufgetaut". Mit "Multitasking", wie man das vom PC her kennt, hat das nicht wirklich was zu tun.

Wieviel schöner wäre es, könnte man als Benutzer selbst entscheiden: Beenden, Einfrieren, oder Hintergrund? (das derzeitige Verhalten kann ja meinetwegen "für Dummies" als Voreinstellung abgelegt sein, die "Geeks" bei Bedarf ändern können). Dann würde ich genanntes "Lustige Witze" nämlich beenden, meinen gerade gelesenen RSS Feed einfrieren - aber den noch ladenden Webbrowser nur in den Hintergrund schieben, damit er weiter lädt, während ich eben mal kurz nach den Mails schaue... DAS wäre für mich ein intelligentes System! Wer dann natürlich alles nur in den Hintergrund schiebt, ist dann auch selbst verantwortlich, wenn sein System schließlich aufgrund Speichermangels "einfriert". Aber selbst in dieser Situation könnte das System sich einen "Puffer" freihalten, um den Nutzer zu warnen: "Du hast da zuviel auf Halde - wähle bitte aus folgender Liste aus, was ich mal eben killen kann". Ohne Auswahl kommt man da nicht raus - erst wenn wieder genügend Speicher zur Verfügung steht.

Aber da können wir uns hier die Köppe heißlaufen lassen - wir sind halt nicht Google-kompatibel, wie Du so schön festgestellt hast :blink:

Ernst

Antworten
Frank W.
  • Forum-Beiträge: 5.103

09.11.2010, 11:04:18 via Website

Vielleicht kommt das ja nochmal.

Im Moment gibt es da zwei Probleme, die das "komplette" Multitasking (noch) nicht zulassen.

Zum einen die Hardware, die das aktuell nicht lange mitmachen würde. Nicht nur zu wenig Speicher, ich denke auch die CPU wäre schnell am Ende. Aber daran wird ja fleißig gearbeitet. Die "kleinen Dinger" werden immer schneller.
Zum anderen aber auch der Akku, der für solche Sachen imho viel zu schwach ist. Wenn der Akku im Moment ca. einen Tag hält, würde er mit "komplettem" Multitasking wahrscheinlich gerade mal einen halben überstehen.

Wenn man jetzt manuell daran rumschraubt (RSS einfrieren, jenes beenden und Browser weiterlaufen lassen) wäre das ziemlich viel manueller Aufwand, weil man bei jedem Schließen entscheiden müsste, was man will.

Ich denke, im Moment ist die Android-Lösung ein sehr guter Kompromiss. Und m.E. immernoch das beste Multitasking, was es für Smartphones gibt. Aber wenn die Hardware besser wird, wird auch das ausgebaut. Da bin ich mir sicher.

Frank

"Irgendwann, möglicherweise aber auch nie, werde ich dich bitten, mir eine kleine Gefälligkeit zu erweisen." (Don Corleone) Für ein friedliches Miteinander"

Antworten
Izzy
  • Forum-Beiträge: 6.929

09.11.2010, 11:19:11 via Website

Och, Frank - so ein Hosentaschenwärmer wäre doch gerade im Winter 'ne praktische Sache. Und wir könnten alle sagen: Ätsch, das Eier-Phone kann das nicht... :grin:

Nee, im Ernst: Da hast Du sicher im Großen und Ganzen Recht. Aber sollte das nicht in der Entscheidung des Anwenders liegen - zumindest was die Akkulaufzeit betrifft? Ich schrieb doch: Derzeitiges als Voreinstellung. Wenn ich jetzt z.B. USB-Debugging aktiviere, bekomme ich eine fette Warnung: "Willst Du das wirklich? Du solltest das aber nur....!". Genau das könnte man hier auch machen: "Du solltest das nur ändern, wenn Du weißt, was Du tust! Dein Telefon kann dadurch wesentlich langsamer werden, der Akku schneller leer - und in China ein Sack Reis umfallen! Auch verbrennst Du Dir damit u.U. die E**r, wenn Du das Ding mit aktiviertem Multitasking in die Hosentasche steckst..."

Klar und verständlich ist jedoch, dass das a) einen zusätzlichen Overhead bedeutet, der b) von der Hardware bewältigt werden muss. Was ja auch einer der Gründe ist, warum ich für mein Wildfire kaum Gingerbread oder gar Honeycomb (offiziell) bekommen werde. Trotzdem wird es beides geben - genau wie es eine ganze Reihe Apps gibt, die auf meinem Phone nicht laufen (wobei hier meist 240x320 Schuld hat - aber auch wieder Hardware).

Dennoch muss ich da wieder das Buzz-Wort einwerfen: Bevormundung... Schau Dir nur mal die ganzen Issues zum Thema Rechteverwaltung an. Hunderte von Usern haben das "starred", die Threads sind teilweise schon über ein Jahr offen. Aber Google interessiert das gar nicht. Daher werden wir mit dieser Anfrage kaum mehr Erfolg haben...

Doch wir schweifen mittlerweile gehörig ab, gelle? :grin:

Antworten
Frank W.
  • Forum-Beiträge: 5.103

09.11.2010, 11:26:37 via Website

Izzy
"...Auch verbrennst Du Dir damit u.U. die E**r, wenn Du das Ding mit aktiviertem Multitasking in die Hosentasche steckst..."

Der Satz muss auf jeden Fall in die Warnung. :grin:


Izzy

Dennoch muss ich da wieder das Buzz-Wort einwerfen: Bevormundung... Schau Dir nur mal die ganzen Issues zum Thema Rechteverwaltung an. Hunderte von Usern haben das "starred", die Threads sind teilweise schon über ein Jahr offen. Aber Google interessiert das gar nicht. Daher werden wir mit dieser Anfrage kaum mehr Erfolg haben...

Da sind wir wieder beim allgemeinen Problem des Kapitalismus. Solange sich mit wenig Aufwand viel Geld verdienen lässt, brauche ich mir kein Bein ausreißen. Das kann ich alles in Ruhe vorbereiten und aus der Schublade ziehen, wenn die Stimmen zu laut werden :grin:

OK, genug abgeschweift. ich denke, es wird irgendwann kommen. Spätestens wenn der Druck der Konkurrenz zu groß wird. Aber bis dahin werden wir deinem Wildfire und meinem Magic die letzte Ruhe gegönnt haben und ein potenteres Phone unser Eigentum nennen. :)

Frank

"Irgendwann, möglicherweise aber auch nie, werde ich dich bitten, mir eine kleine Gefälligkeit zu erweisen." (Don Corleone) Für ein friedliches Miteinander"

Antworten
Mirko Schenk
  • Forum-Beiträge: 25

09.11.2010, 11:30:15 via Website

Izzy
Eben das meinte ich ja: Damit die App im Hintergrund "weitermacht", muss sie wohl als Service gekennzeichnet sein.
Vielleicht "kloppen" wir uns jetzt nur um Begriffe, aber ganz so mag ich das nicht stehenlassen. Eine App ist nicht als "Service gekennzeichnet", ein Service ist optionaler Teil einer App.
Oder ums mal allgemeinverständlich auszudrücken: Im Beispiel mit dem Browser gibt es zwei Möglichkeiten:
1. Die Seite wird vom sichtbaren Teil der App geladen. In diesem Fall wird das Laden unterbrochen solange die App nicht sichtbar ist.
2. Es wird für das Laden der Seite ein Service gestartet (falls er nicht schon läuft) und dieser damit beauftragt, die Seite im Hintergrund zu laden. Ist die App nicht sichtbar, läuft dann auch wirklich nur dieser Teil der App (also das Laden der Seite, nicht der Darstellungsteil). Wenn der Dienst nicht läuft (weil z.B. gerade keine Seite geladen wird), macht der Browser im Hintergrund überhaupt nichts. Viele Apps stoppen die Dienste z.B. wenn das Hauptfenster mit der Zurück-Taste verlassen wurde.

Es liegt also ganz in der Hand des Programmierers, ob und was im Hintergrund weiter läuft.
Problematisch bei Android ist, dass man als Anwender wenig Einfluss darauf hat, wann etwas im Hintergrund weiter läuft (bzw. regelmäßig angestoßen wird). Das "Beenden mit Zurück" ist optional, nicht wirklich intuitiv und oft unpraktisch - etwa, wenn man beim Browser erst gefühlte 1024x zur vorherigen Seite kommt. Ein "Beenden"-Button bzw. Menü-Item ist unerwünscht. Google geht gar so weit, den "Abmelden"-Button bei der offiziellen Twitter-App als intuitives "jetzt bitte nicht mehr im Hintergrund checken" anzupreisen...

Wäre jetzt aber jede App als Service gekennzeichnet, hätte der OOM-Killer ein kleines Problem... Sie Wikipedia-Artikel: Der aktuelle Zustand des Programms wird "eingefroren", und auf Anfrage wieder "aufgetaut". Mit "Multitasking", wie man das vom PC her kennt, hat das nicht wirklich was zu tun.
Wie gesagt, das muss man trennen.
Dienste und Nachrichten-Behandlung laufen mit einem "stinknormalen" Multitasking im Hintergrund, nur der Teil, der für die Darstellung nötig ist, wird "eingefroren". Wobei Android alles, was nicht explizit als "Hintergrundarbeit" programmiert wurde dem Darstellungsteil zuschlägt - aber das sind eher Entwickler-Details.

Wieviel schöner wäre es, könnte man als Benutzer selbst entscheiden: Beenden, Einfrieren, oder Hintergrund?
Wobei man ja auch "beendete" Apps intern erstmal nur "einfrieren" könnte und diese dann beim OOM-Aufräumen bevorzugt wegwerfen könnte.

Wer dann natürlich alles nur in den Hintergrund schiebt, ist dann auch selbst verantwortlich, wenn sein System schließlich aufgrund Speichermangels "einfriert".
Bei den meisten Apps wäre das auch kein Problem, viele haben ja gar keinen Hintergrunddienst. Die würden also genauso wie "eingefrorene" im Zweifelsfall gekickt und neu geladen.

— geändert am 09.11.2010, 11:39:07

Antworten
Izzy
  • Forum-Beiträge: 6.929

09.11.2010, 11:39:58 via Website

Mirko Schenk
Izzy
Eben das meinte ich ja: Damit die App im Hintergrund "weitermacht", muss sie wohl als Service gekennzeichnet sein.
Vielleicht "kloppen" wir uns jetzt nur um Begriffe, aber ganz so mag ich das nicht stehenlassen. Eine App ist nicht als "Service gekennzeichnet", ein Service ist optionaler Teil einer App.

Nee, ich bin da ganz friedlich - kloppen brauchen wir uns nicht: Meine Variante ist "stark vereinfacht für technische Laien", Deine ist "technisch korrekt für die Versierteren" - wie immer, Mirko: Ich denke, wir ergänzen uns da ganz gut.

Mirko Schenk
Das "Beenden mit Zurück" ist optional, nicht wirklich intuitiv und oft unpraktisch - etwa, wenn man beim Browser erst gefühlte 1024x zur vorherigen Seite kommt.

Das unterschreib ich auf der Stelle! :grin:

Mirko Schenk
Google geht gar so weit, den "Abmelden"-Button bei der offiziellen Twitter-App als intuitives "jetzt bitte nicht mehr im Hintergrund checken" anzupreisen...

Weia - wenn sie das "intuitiv" nennen... Klar würde ich das bei einer von mir geschriebenen App so erwarten - aber bei Google wäre ich mir da nie sicher, ob da nicht trotzdem weiter gecheckt wird. Und dann irgendwann eine Notification kommt: "Da ist was Neues da, meld Dich doch mal eben wieder an!"...

Mirko Schenk
Wieviel schöner wäre es, könnte man als Benutzer selbst entscheiden: Beenden, Einfrieren, oder Hintergrund?
Wobei man ja auch "beendete" Apps intern erstmal nur "einfrieren" könnte und diese dann beim OOM-Aufräumen bevorzugt wegwerfen könnte.

Auch soweit würde ich im Grenzfall noch mitgehen - aber darauf bestehen, das Wort "bevorzugt" fett zu unterstreichen (und nicht nur kursiv zu setzen, autsch...)

Antworten
Mirko Schenk
  • Forum-Beiträge: 25

09.11.2010, 11:56:44 via Website

Izzy
Nee, ich bin da ganz friedlich - kloppen brauchen wir uns nicht: Meine Variante ist "stark vereinfacht für technische Laien", Deine ist "technisch korrekt für die Versierteren" - wie immer, Mirko: Ich denke, wir ergänzen uns da ganz gut.
:grin:
Mir ging's halt vor allem darum, dass das "als Service gekennzeichnet" missverstanden werden kann. Hätte die ganze App so ein "Service-Flag", würden Browser, Mediaplayer, etc. ja auch im Hintergrund laufen, wenn sie gar nichts zu tun haben. Bei einem Dienst, der (hoffentlich...) nur bei Bedarf läuft, sehen CPU- und Speicherbedarf schon ganz anders aus.
Es ist in diesem Bereich aber wirklich schwer, ein sinnvolles Mittelmaß zwischen "stark vereinfacht für technische Laien" und "technisch korrekt für die Versierteren" zu finden.

Weia - wenn sie das "intuitiv" nennen... Klar würde ich das bei einer von mir geschriebenen App so erwarten - aber bei Google wäre ich mir da nie sicher, ob da nicht trotzdem weiter gecheckt wird. Und dann irgendwann eine Notification kommt: "Da ist was Neues da, meld Dich doch mal eben wieder an!"...
Das, und außerdem möchte ich mich beim nächsten Start nicht von Hand neu anmelden.

Antworten
Heiko M.
  • Forum-Beiträge: 280

09.11.2010, 12:09:55 via Website

So hier mal ein Screenshot nachdem ich mit der Hometaste die Androidpit APP "verlassen" habe da wunderte ich mich das das scrollen des APP Drawers etwas ruckeliger war als sonst, ein Blick was CPU braucht hat mir dann das hier gezeigt UND GENAU DESWEGEN nutze ich die Funktion APPS zu "killen".
Kein Wunder das ein Akku dann schön leergesaugt wird ohne das wirklich ein Nutzen dadurch entsteht und genau deswegen weil ich sowas "kille" hält mein DHD Akku auch 2 Tage trotz normaler Nutzung! Da ist es mir nun völlig egal wie intelligent Android Apps behandelt, auf das verlasse ich mich nicht.

Warum APPBRAIN APP MARKET nun auch CPU Leistung zieht obwohl ich das syncen der App auf MANUELL stehen habe verschliesst sich mir auch völlig, meine Konsequenz ist ich "kille" die APP damit Ruhe ist und meine CPU etwas für die Umwelt tut, nämlich Energie sparen :grin:

— geändert am 09.11.2010, 12:31:42

Antworten
Izzy
  • Forum-Beiträge: 6.929

09.11.2010, 12:32:08 via Website

Welche App ist denn das da in Deinem Screenshot?

Nebenbei: Nicht Äpfel mit Birnen verwechseln.
Richtig: Die AndroidPIT App belegt weiterhin 58.8MB RAM (wow! Damit ist sie aber definitiv auch die erste App, die dem OOM-Killer zum Opfer fällt)
Falsch: Sie "saugt dort den Akku leer".

"eingefrorene" Apps saugen nix am Akku - nur ihr Speicher-Abbild wird noch im RAM gehalten, damit der nächste "Start" schneller geht. So ein "Abbild" tut nix - außer dazuliegen, und auf Aktivierung oder OOM-Killer zu warten...

Antworten
Heiko M.
  • Forum-Beiträge: 280

09.11.2010, 12:43:48 via Website

Sicher saugt die am AKKU, die verbraucht CPU siehst du das nicht? Nachdem "killen" der APP geht die CPU Belastung runter und zwar massiv runter!

RICHTIG in den Screenshot schauen gell? :#

Oder denkst du etwa ich wäre net blöd? *LOL*

Übrigens ich will jetzt nicht die APP von AndroidPIT hier negativ hinstellen, aber manchmal braucht die auch im Hintergrund ordentlich CPU und das mag ich nicht wenn es nicht nötig ist, macht die APP aber auch nicht immer, tun andere APPS auch hin ud wieder, warum weiss der Geier aber ich "kille" dann und gut ist, deshalb wird ein Taskmanager auf meinem DHD immer drauf bleiben, nicht um wild um mich zu schiessen aber um selber zu kontrollieren was abläuft und ich warte lieber 2 Sekunden länger auf das starten einer APP als das ich öfters aufladen muss.

EDIT:
Gerade sehe ich das es ein neues Update der AndroidPIT App gibt mit dem Recht "BEIM BOOTEN STARTEN" so wie ich das sehe war das vorher nicht so und GENAU deshalb werde ich die APP jetzt auch nicht updaten, wozu macht Ihr sowas? Ich nutze mein DHD nicht nur um AndroidPIT zu benutzen und sehe es auch nicht ein das es sich beim Booten automatisch startet, es läuft schon genug im Hintergrund was in meinen Augen nicht nötig ist. Sooo frei wie Android gerne hingestellt wird für den Nutzer ist es dann doch nicht, man sollte selber entscheiden dürfen was beim Booten automatisch gestartet werden darf, zumindest wenn es APPS sind die nicht wirklcih für das Android System benötigt werden.

— geändert am 09.11.2010, 13:03:28

Antworten
Mirko Schenk
  • Forum-Beiträge: 25

09.11.2010, 13:03:10 via Website

Heiko M.
Gerade sehe ich das es ein neues Update der AndroidPIT App gibt mit dem Recht "BEIM BOOTEN STARTEN" so wie ich das sehe war das vorher nicht so und GENAU deshalb werde ich die APP jetzt auch nicht updaten, wozu macht Ihr sowas?
Ich hab die ja nun nicht programmiert, aber ich würde vermuten, dass das entweder mit dem Market (Updates!) oder den Foren-Benachrichtigungen/PNs von AndroidPit zusammenhängt. Schau doch mal in die Einstellungen, ob sich da was machen lässt (verwende die App selbst nicht...).

Antworten
Heiko M.
  • Forum-Beiträge: 280

09.11.2010, 13:05:34 via Website

Mirko Schenk

Ich hab die ja nun nicht programmiert, aber ich würde vermuten, dass das entweder mit dem Market (Updates!) oder den Foren-Benachrichtigungen/PNs von AndroidPit zusammenhängt. Schau doch mal in die Einstellungen, ob sich da was machen lässt (verwende die App selbst nicht...).

Nun dafür müsste ich updaten und das tue ich erstmal nicht, es laufen schon genug Sachen nach dem Booten im Hintergrund die mich massiv stören werde jetzt nicht weiter meinen Akku belasten mit Dingen die nicht nötig sind. Dennoch Danke für den Hinweis.

Wenn ich ein Smartphone wollte was mich bevormundet hätte ich mir besser ein iPhone gekauft das kann das nämlich besser :grin:

— geändert am 09.11.2010, 13:06:47

Antworten
Izzy
  • Forum-Beiträge: 6.929

09.11.2010, 13:09:26 via Website

Heiko M.
Sicher saugt die am AKKU, die verbraucht CPU siehst du das nicht? Nachdem "killen" der APP geht die CPU Belastung runter und zwar massiv runter!

Tut mir leid - aber ich kann Deinem Screenshot bei besten Willen nicht entnehmen, dass die AndroidPIT App CPU verbraucht - lediglich, dass die CPU gerade zu über 80% belastet ist, jedoch nicht von wem.

Heiko M.
Oder denkst du etwa ich wäre net blöd? *LOL*

Öhm... :*) Zumindest hast Du meine Frage nicht beantwortet, welches App da auf Deinem Screenshot abgebildet ist... :blink:

Heiko M.
deshalb wird ein Taskmanager auf meinem DHD immer drauf bleiben, nicht um wild um mich zu schiessen aber um selber zu kontrollieren was abläuft und ich warte lieber 2 Sekunden länger auf das starten einer APP als das ich öfters aufladen muss.

Ja, das kann ich so unterschreiben :)

Heiko M.
Gerade sehe ich das es ein neues Update der AndroidPIT App gibt mit dem Recht "BEIM BOOTEN STARTEN" so wie ich das sehe war das vorher nicht so und GENAU deshalb werde ich die APP jetzt auch nicht updaten, wozu macht Ihr sowas?

Wahrscheinlich um ständig im Hintergrund nach Updates für Deine Apps zu schauen? Für den einen oder anderen mag das sinnvoll sein. Die Permission alleine ist nicht böse - sofern man das abschalten kann. Bei Dir - und auch bei mir - macht das nicht unbedingt Sinn, zumal wenn da gleich mehrere Apps nach demselben schauen (Vending schaut ja auch noch, und dann wäre da noch [app]aTrackDog[/app], und wer weiß was man sonst noch installiert haben könnte). Für den einen ist es wichtig, immer auf dem Laufenden zu sein - ich persönlich stoße eine solche Suche lieber manuell an. Ich brauche nämlich nicht jeden Tag darüber informiert zu werden, dass von Öffi schon wieder ein Update da liegt (was dann meist ohnehin nur neues für andere Regionen beinhaltet)...

Heiko M.
es läuft schon genug im Hintergrund was in meinen Augen nicht nötig ist.

Ohja - auch das kann ich unterschreiben. Siehe Bruce-Willis-Mode - oder auch meinen anderen Thread: Apps am automatischen Starten hindern.

Antworten
Mirko Schenk
  • Forum-Beiträge: 25

09.11.2010, 13:23:06 via Website

Izzy
Heiko M.
Wenn ich ein Smartphone wollte was mich bevormundet hätte ich mir besser ein iPhone gekauft das kann das nämlich besser :grin:
LOL :grin:

Auch das kann ich so unterschreiben :grin:
Interessanterweise war in dem von mir verlinkten Thread im Google-Entwickler-Forum auch einer, der auch fürs iPhone programmiert. Die haben wohl seit iOS4 genau dasselbe Problem mit den Hintergrunddiensten. Es ist dort zwar nicht so viel möglich, bei dem was möglich ist, weiß aber auch kein User, was da eigentlich gerade seinen Akku leersaugt...

Antworten
Heiko M.
  • Forum-Beiträge: 280

09.11.2010, 13:53:29 via Website

Es ist die APP "SYSTEM PANEL APP" und am linken Rand siehst du doch das die APP die CPU belastet und du darfst mir auch ruhig glauben nachdem die AndroitPIT APP von mir "gekilled" wurde das die CPU Belastung wieder auf normal Niveau ging. Ich kann ja hier nur ein statisches Bild zeigen aber die AndroitPIT App hat sehr viel CPU immHintergrund beansprucht, habe ja nun keinen Grund hier euch auf den Arm zu nehmen.

Die AndoidPIT APP hatte ein wenig CPU Schwankungenj der Screenshot zeigt das die APP CPU benötigt aber nicht ganz soviel wie oben die Anzeige das liegt einfach an der kleinen Verzögerung der Anzeige, aber die APP hat die CPU stark beansprucht, es geht ja jetzt auch nicht um die AndroidPIT APP sondern um den Sinn oder Unsinn eines Taskmanagers.

Autokill gibt es bei mir nicht nur manuell wird "gekilled".

EDIT
Nochmal für alle Zweifeler, sobald ich die AndroidPIT App beendet hatte gin gid eCPU Belastung wieder auf das normale Niveau runter, ich spekuliere hier nicht ich habs doch gesehen!

Nochmal EDIT
So wirkt das sich ja jetzt auch nicht immer aus, aber hin und wieder bemerke ich das APPS dann doch mehr tun als nur "eingefroren" meinen RAM "warm" zu halten, nicht das jetzt der Eindruck entsteht die AndroidPIT App ist hier der Maßstab!

— geändert am 09.11.2010, 14:01:25

Antworten
Izzy
  • Forum-Beiträge: 6.929

09.11.2010, 14:18:19 via Website

"Glauben" ist hier nicht mein Problem. Aber der Balken neben der App hätte eben so gut für "prozentualen RAM Verbrauch" stehen können, sorry. Wer die App nicht kennt, kann da nur raten.

Und ich will mich gar nicht mit Dir streiten an diesem Punkt: Ich gehöre ganz und gar nicht zu der Gruppe, die Taskkiller per se verteufelt. Meine Erfahrung deckt sich sogar teilweise mit Deiner - meine Beschreibung gibt lediglich die "offizielle Theorie" wider. Siehe meine Beiträge am Anfang des Threads: Richtig eingesetzt ist ein Taskkiller/Autostart Editor/... durchaus nützlich. Lediglich ein "Allheilmittel" ist er nicht - aber auch darin stimmen wir ja überein...

Antworten
Mirko Schenk
  • Forum-Beiträge: 25

09.11.2010, 14:34:43 via Website

Tja, und letztlich hängt's doch wieder an dem Problem, dass Android keine intuitive, einheitliche Methode für "App verlassen, bitte nichts weiter im Hintergrund tun" bietet...
Wobei natürlich schon mal interessant wäre, was die App da im Hintergrund treibt. Vermutlich einfach nur nach neuen Tests, Blogeinträgen, Updates, etc. suchen.

Nunja, und dazu noch ein paar ungeschickt programmierte Autostarts bzw. Ereignis-Behandlungsroutinen. Aber das Problem kennt man ja schon vom Desktop. ;-)

Antworten