• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Multitasking-Leiste und Hintergrundprozesse

NickK

Weigelts Zinszahler (Rotfranch)
Registriert
07.04.10
Beiträge
252
Hallo zusammen,

wenn ich auf dem iPhone unter iOS 6 zweimal auf die Home-Taste drücke, erscheint unten am Rand ja eine Leiste mit Apps.
Ich ging bisher davon aus, dass dies die zuletzt verwendeten Apps sind, so dass man schnell hin- und herwechseln kann.

Nun lese ich:
"[...] drückt man zweimal kurz nacheinander auf die Home-Taste unter dem Bildschirm. Am unteren Bildschirmrand erscheint die sogenannte Multitasking-Leiste, in der alle Apps aufgeführt werden, die sich derzeit im Arbeitsspeicher befinden."
(http://www.spiegel.de/netzwelt/apps...app-saugt-angeblich-iphones-aus-a-903002.html)
1. Mal abgesehen von der kritisierten FB-App: Stimmt das mit dem Arbeitsspeicher? Die befinden sich doch nicht alle da im Arbeitsspeicher?​

Außerdem verwirrt mich:
"Auf der Suche nach dem Grund spürte er den Stromverbrauchern im iPhone mit der Apple-Entwicklersoftware Instruments nach. Das Ergebnis: [...] Auch wenn man sie nicht nutzt, sie also beispielsweise mit einem Druck auf die Home-Taste verlassen hat, wird sie alle paar Minuten für etwa zehn Sekunden aktiv." (gleiche Quelle)

2. Anscheinend habe ich die Funktionsweise von iOS nicht ganz verstanden. Ist so etwas unter iOS denn überhaupt möglich? Eine App, die alle paar Minuten von allein aktiv wird?

Vielen Dank für Eure Meinungen!
Nick
 

Martin Wendel

Redakteur & Moderator
AT Administration
AT Moderation
AT Redaktion
Registriert
06.04.08
Beiträge
45.174
zu 1. Nein, die befinden sich nicht alle im Arbeitsspeicher. Nur die letzten paar Apps sind im RAM.
zu 2. Keine Ahnung, klingt aber auf jeden Fall irgendwie merkwürdig.
 

smoe

Roter Winterkalvill
Registriert
13.04.09
Beiträge
11.575
Wir müssen an der stelle unterscheiden. Apps im Hintergrund sind in aller Regel nicht länger als ein paar Minuten aktiv (maximal 10) außer sie betreiben Navigation, spielen Musik ab oder ähnliches, das bekommst du in der Regel aber auch mit, daher musst du dir keine großen Gedanken um die Apps in die Multitaskingleiste machen.

Es gibt aber ein paar Apps die auch im Hintergrund seltsame Dinge machen. Bei der FB App denke ich, dass FB an der Stelle vielleicht über den Push Dienst die Daten in der App aktuell hält und so dafür sorgt, dass die App regelmäßig auch im Hintergrund aufwacht, oder die VoIP-APIs verwendet um im Hintergrund aktiv zu bleiben.

Generell nützt es aber nichts pauschal alle Apps aus der Leiste zu löschen, die Speicherverwaltung von iOS kümmert sich selbst drum, nur ab und zu gibt es sdhwarze Schafe unter den Apps die man dann eben finden und am besten komplett löschen sollte. FB scheint da so ein Kandidat zu sein.
 

NickK

Weigelts Zinszahler (Rotfranch)
Registriert
07.04.10
Beiträge
252
Apps im Hintergrund sind in aller Regel nicht länger als ein paar Minuten aktiv (maximal 10) außer sie betreiben Navigation, spielen Musik ab oder ähnliches.

Aber unterstützt iOS demnach jetzt Multitasking für _alle_ Apps? Ich kannte das früher so, dass zuerst gar kein Multitasking möglich war, und mit späteren Versionen nur einige wenige Apps von Apple die dedizierte Erlaubnis bekommen haben, im Hintergrund zu laufen (z.B. Cisco VPN Client).
Jetzt kann also jeder im iDEP Apps herausgeben, die einfach so im Hintergrund weiter laufen?

Bei der FB App denke ich, dass FB an der Stelle vielleicht über den Push Dienst die Daten in der App aktuell hält und so dafür sorgt, dass die App regelmäßig auch im Hintergrund aufwacht
Was genau meinst Du? Der Push-Dienst als Apple-eigener Dienst läuft ja permanent im Hintergrund (so wie ich das verstehe). Der kann auch die Badge auf dem FB-Icon mit Zahlen versehen. Wo darüber hinaus Daten aktuell gehalten werden müssen, ist mir nicht klar..

Generell nützt es aber nichts pauschal alle Apps aus der Leiste zu löschen, die Speicherverwaltung von iOS kümmert sich selbst drum
Tja hmm, welche denn auch? Wenn ich Martin richtig verstehe, ist es ja doch nur eine "Liste" der letzten Apps und hat keine Aussagekraft darüber, welche nun gerade im RAM sind, und welche nicht...

Nick
 

Martin Wendel

Redakteur & Moderator
AT Administration
AT Moderation
AT Redaktion
Registriert
06.04.08
Beiträge
45.174
iOS (bzw. früher iPhone OS) beherrscht immer schon Multitasking. Am Anfang aber nur die Apps von Apple selbst (z.B. der Musik-Player). Seit iOS 4 dürfen alle Entwickler bestimmte Multitasking-APIs verwenden, näheres dazu hier: http://www.apfeltalk.de/wiki/iOS#Multitasking
 

NickK

Weigelts Zinszahler (Rotfranch)
Registriert
07.04.10
Beiträge
252
Gut, dort werden "Fast App Switching" und "Task Completion" erläutert.

Aber könnte eine App sich damit nach dem Beenden trotzdem alle paar Minuten neu starten und für ein paar Sekunden laufen? Wenn ich mir das auf einem UNIX-basierten System vorstelle: Entweder der Prozess läuft, oder er läuft eben nicht. Parallel dazu gibt es Daemons.

Auch funktioniert das mit dem Task Completion bei anderen Apps irgendwie nicht nachvollziehbar: Wenn ich einen Firmen-Emailclient mittels Home-Button (1x) beende, sehe ich im TCPdump, dass ein laufender Abrufvorgang von Mails nach 10 Sek. jäh unterbrochen wird.. (nicht so bei der iOS-Email App)...
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
Eine App kann im Hintergrund nur gemäß Vorgaben von Apple laufen. Also entweder Task Completion oder permanenter Hintergrundbetrieb z.B. bei Audio, VoIP und Navi-Apps.
 

NickK

Weigelts Zinszahler (Rotfranch)
Registriert
07.04.10
Beiträge
252
Eine App kann im Hintergrund nur gemäß Vorgaben von Apple laufen. Also entweder Task Completion oder permanenter Hintergrundbetrieb z.B. bei Audio, VoIP und Navi-Apps.

Das hieße also, die FB-App müste Task Completion-Erlaubnis von Apple haben und sich vor Ablauf der genannten 10 Minuten immer neu starten?
Das klingt sehr unwahrscheinlich, dass Apple so ein Vorgehen zuließe..
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
Die FB-App wird eher die Audio-, VoIP- oder Navi-APIs nutzen, um im Hintergrund aktiv zu bleiben.
 

smoe

Roter Winterkalvill
Registriert
13.04.09
Beiträge
11.575
Aber unterstützt iOS demnach jetzt Multitasking für _alle_ Apps? Ich kannte das früher so, dass zuerst gar kein Multitasking möglich war, und mit späteren Versionen nur einige wenige Apps von Apple die dedizierte Erlaubnis bekommen haben, im Hintergrund zu laufen (z.B. Cisco VPN Client).
Jetzt kann also jeder im iDEP Apps herausgeben, die einfach so im Hintergrund weiter laufen?
Ja, seit iOS4 gibt es definierte Schnittstellen für Hintergrundprozesse die jede App nutzen kann, aber nur unter bestimmten Vorraussetzungen. Es gibt Schnittstellen für Navigation (damit dein Navi eben auch während eines Telefonats weiter Ansagen machen kann), für Musik, für VoIP (zb Skype und Co), und eine generische Schnittstelle für "Task Completion" für alles mögliche. Wenn eine App jetzt eben nicht speziell Navigation, Musik oder VoIP betreibt, dann kann sie nur die Task Completion Schnittstelle nutzen. Diese ist auf 10min begrenzt, damit kann die App eben im Hintergrund noch ein paar Sachen fertig machen, zb automatisch speichern oder Daten updaten, nach 10min wird sie aber vom System beendet, daher musst du dir darüber keine großen Gedanken Jahren. Im Fall von Navigation, Musik oder VoIP darf die App auch länger im Hintergrund laufen, muss aber eben auch den Anwendungsfall dafür nutzen, Apple kontrolliert das recht genau.
Generell kannst dein der Multitaskingleiste nicht erkennen ob eine App gerade läuft oder nur in der Liste steht weil sie kürzlich verwendet wurde. Nachdem es aber das 10min Limit und die anderen Einschränkungen gibt ist das eigentlich kein großes Problem (trotzdem imho nicht besonders schön gelöst).

Was genau meinst Du? Der Push-Dienst als Apple-eigener Dienst läuft ja permanent im Hintergrund (so wie ich das verstehe). Der kann auch die Badge auf dem FB-Icon mit Zahlen versehen. Wo darüber hinaus Daten aktuell gehalten werden müssen, ist mir nicht klar..
Du könntest als FB zb regelmäßig Pushs an deine App senden, jedesmal wenn eine Pushnotification ankommt, kann die betreffende App mehr machen als nur das Badge zu ändern, sondern eben afaik auch wieder 10min im Hintergrund laufen. Das könnte man zb recht einfach testen indem man Pushnotifications für FB deaktiviert. Kann aber auch sein, dass FB die VoIP API verwendet, FB kann ja auch Sprachchats. Man kann mit den Hintergrund-Schnittstellen schon ein bisschen Schabernack treiben...

Tja hmm, welche denn auch? Wenn ich Martin richtig verstehe, ist es ja doch nur eine "Liste" der letzten Apps und hat keine Aussagekraft darüber, welche nun gerade im RAM sind, und welche nicht...
Ja, das stimmt, trotzdem kann eine App davon gerade im Hintergrund laufen. Du erkennst das wie gesagt in dieser Leiste überhaupt nicht.

Auch funktioniert das mit dem Task Completion bei anderen Apps irgendwie nicht nachvollziehbar: Wenn ich einen Firmen-Emailclient mittels Home-Button (1x) beende, sehe ich im TCPdump, dass ein laufender Abrufvorgang von Mails nach 10 Sek. jäh unterbrochen wird.. (nicht so bei der iOS-Email App)...
Task Completion ist etwas, dass nicht automatisch kommt, der Entwickler muss diese Schnittstelle erstmal in die App einbauen. Ist in deinem Beispiel wohl nicht der Fall...
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
Du könntest als FB zb regelmäßig Pushs an deine App senden, jedesmal wenn eine Pushnotification ankommt, kann die betreffende App mehr machen als nur das Badge zu ändern, sondern eben afaik auch wieder 10min im Hintergrund laufen.
Ne, Push-Notifications (also die außerhalb der offenen App) haben mit der App nichts zu tun und laufen über einen iOS-eigenen zentralen Daemon. Der zeigt Nachrichten an, spielt Töne ab und verändert auch die Badges.

Erst wenn ein Nutzer über die Push-Notification die App öffnet, wird sie auch wieder aktiv.
 

smoe

Roter Winterkalvill
Registriert
13.04.09
Beiträge
11.575
Hmm okay, ich dachte immer da gäbe es eine Systemfunktion für. Dann ist es wohl eine VoIP Geschichte.
 

NickK

Weigelts Zinszahler (Rotfranch)
Registriert
07.04.10
Beiträge
252
Generell kannst dein der Multitaskingleiste nicht erkennen ob eine App gerade läuft oder nur in der Liste steht weil sie kürzlich verwendet wurde.
Da erscheint mir doch der Begriff "Multitaskingleiste" eher irreführend, oder?

Ich nehme an, es gibt keine App, die mir das (aus Interesse) mal anzeigen könnte, oder?

Frage: Wenn ich das App-Icon in der Multitasking-Liste gedrückt halte, erscheint ja dieses rote Einbahnstraßen-Symbol. Wenn ich das nun anklicke, was passiert eigentlich? Entfernt es mir nur einen Eintrag aus dieser Nutzungshistorie oder killt es den Prozess in der Task Completion-Schleife, oder...?

Task Completion ist etwas, dass nicht automatisch kommt, der Entwickler muss diese Schnittstelle erstmal in die App einbauen. Ist in deinem Beispiel wohl nicht der Fall...
Wie kann man sowas vergessen :D

Also Schnittstelle heisst in diesem Zusammenhang dann API-Methode, richtig?
 

Martin Wendel

Redakteur & Moderator
AT Administration
AT Moderation
AT Redaktion
Registriert
06.04.08
Beiträge
45.174
Da erscheint mir doch der Begriff "Multitaskingleiste" eher irreführend, oder?
Die Leiste heißt offiziell auch nicht Multitasking-Leiste. Ich glaube sie hat von Apple gar keinen offiziellen Namen... App-Verlauf trifft es wohl besser.

Ich nehme an, es gibt keine App, die mir das (aus Interesse) mal anzeigen könnte, oder?
Nein, gibt es nicht. Ob es in Cydia diesbezüglich etwas gibt, weiß ich nicht.

Frage: Wenn ich das App-Icon in der Multitasking-Liste gedrückt halte, erscheint ja dieses rote Einbahnstraßen-Symbol. Wenn ich das nun anklicke, was passiert eigentlich? Entfernt es mir nur einen Eintrag aus dieser Nutzungshistorie oder killt es den Prozess in der Task Completion-Schleife, oder...?
Wenn du die App aus dem App-Verlauf entfernst, wird sie komplett geschlossen, (ich schätze mal) aus dem RAM entfernt und etwaige Hintergrundaktivität beendet. Wobei es davon offenbar auch wieder Ausnahmen gibt, z.B. die Google-App. Die kannst du schließen so oft du willst, die ortet dich wenn du Google Now verwendest trotzdem im Hintergrund weiter. Keine Ahnung, wie die das wiederum machen. ;)
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
Ich glaube, die Nutzer selber haben das Ding "Multitaskingleiste" genannt.

Das Einbahnstraßensymbol entfernt die App aus der Liste. Sollte die App noch laufen, wird sie ebenfalls dadurch beendet. Das ist einfach als Vereinfachung für den Durchschnittsnutzer gedacht. Der soll sich ja nicht wirklich mit der Verwaltung von Prozessen herumschlagen müssen (daher ist die Verhaltensweise der Facebook-App auch so ärgerlich).
 

NickK

Weigelts Zinszahler (Rotfranch)
Registriert
07.04.10
Beiträge
252
Also, ich habe jetzt drei Begriffe gelernt:

1. Fast App Switching: Hat nichts mit Hintergrund zu tun, Prozesse werden einfach ein paar Sekunden nach einmaligem Drücken des Home-Buttons eingefroren (offene Netzwerk-Sockets werden abrupt geschlossen), bei zwei-maligem Drücken des Home-Buttons passiert genau das gleiche, nur dass man unten eine Liste der letzten Apps angezeigt bekommt.. Bei einem Reboot geht der eingefrorene Zustand verloren, da er nur im RAM war.

2. Task Completion: Ein Handle, das jeder App-Entwickler ohne Bedingungen nutzen (und auch missbrauchen) kann. Grenze = 10 Min. durch iOS festgelegt

3. Echte Hintergrund-Dienste: Müssen in die Kategorie Audio, Navigation oder VoIP fallen und dürfen diese Handles auch nur dann verwenden, sonst könnte Apple dies früher oder später aus dem App Store verbannen.


Das "Einbahnstraßen-Symbol" löscht Einträge aus der History, und führt bei Existenz eines zugehörigen Prozesses auch ein "kill" aus, d.h. nicht-gespeicherte Daten gehen verloren, Netzwerkverbindungen werden ohne Verabschieden gekappt, etc..

Der einzige Weg, wie die FB-App also den ganzen Tag über trotz Nicht-Gebrauch über Stunden die CPU beschäftigen kann -wenn der Artikel denn stimmt-, wäre demnach über die VoIP-Methode (Punkt 3).

Habe ich das jetzt so richtig verstanden?

Vielen Dank für diese erleuchtende Diskussion ;)
Nick
 

EinsDreiSechs

Erdapfel
Registriert
05.06.13
Beiträge
1
Der einzige Weg, wie die FB-App also den ganzen Tag über trotz Nicht-Gebrauch über Stunden die CPU beschäftigen kann -wenn der Artikel denn stimmt-, wäre demnach über die VoIP-Methode (Punkt 3).

würde ich auch so sehen, da ja auch die FB App mittlerweile Telefonate oder anbietet (wenn auch versteckt in der Chat Funktion). Da liegt es nahe, dass die VoIP API genutzt wird