2017-01-29 6 views
-2

Ich entwickle eine einfache App, die nur ein weißes Rauschen im Hintergrund spielt, während ich andere Dinge mache.Warum funktioniert meine App nicht mehr?

Es funktioniert sehr gut, wenn ich zu anderen Anwendungen (wie Spiele, Chrome-Browser, etc.) wechseln, aber manchmal (zum Beispiel wenn viele Chrom-Tab geöffnet sind) hören die weißen Geräusche aufhören und ich muss meine App neu laden.

Ich benutze keine Dienste, ist das der Grund?

Antwort

2

Weil Ihre Apps vom System getötet werden, um Ressourcen für andere Apps (Spiele, Chrome, etc) aufzugeben. Sie müssen also einen Service verwenden.

Hier ein Auszug aus Processes and Application Life Cycle für weiteres Erklärung Details:

Ein ungewöhnliches und grundlegendes Merkmal von Android ist, dass eine Anwendung Lebensdauer des Prozesses nicht direkt von der Anwendung gesteuert wird selbst. Stattdessen wird durch das System durch eine Kombination der Teile der Anwendung, die das System weiß, ausgeführt, wie wichtig diese Dinge für den Benutzer sind und wie viel Speicher insgesamt im System verfügbar ist .

...

  1. A gecached Prozess ist eine, die derzeit nicht benötigt wird, so ist das System frei, es zu töten, wie gewünscht, wenn der Speicher an anderer Stelle benötigt wird. In einem normal verhaltenden System sind dies die einzigen Prozesse, die in Speicherverwaltung beteiligt sind: ein gut laufendes System wird mehrere zwischengespeicherte Prozesse immer verfügbar haben (für effizientere Umschaltung zwischen Anwendungen) und regelmäßig die ältesten je nach Bedarf zu töten. Nur in sehr kritischen (und unerwünschten) Situationen wird das System zu einem Punkt, wo alle zwischengespeicherten Prozesse getötet werden, und es muss starten Service-Prozesse zu töten. Diese Prozesse enthalten oft eine oder mehrere Activity Instanzen, die für den Benutzer derzeit nicht sichtbar sind (die Methode onStop() wurde aufgerufen und zurückgegeben). Vorausgesetzt, sie implementieren ihre Aktivität Lebenszyklus korrekt (siehe Aktivität für weitere Details), wenn das System solche Prozesse abstürzt es keinen Einfluss Benutzer beim Zurückkehren zu dieser App: Es kann den zuvor gespeicherten Zustand wiederherstellen, wenn die damit verbunden ist Aktivität wird in einem neuen Prozess neu erstellt.
2

Ich denke, Services ist, was Sie suchen.

Ein Service ist eine Anwendungskomponente, die ausführen kann Operationen im Hintergrund mit langer Laufzeit, und es bietet keine Benutzer Schnittstelle.

2

Für eine bessere Chance OS zu verhindern, Ihre App zu töten, sollten Sie eine

Vordergrund Dienst

nach der offiziellen Anleitung verwenden hier: https://developer.android.com/guide/components/services.html#Foreground

Denken Sie daran, dass Es gibt keine Möglichkeit, sicher zu sein, dass OS Ihre App niemals zum Absturz bringen wird, denn wenn der RAM-Speicher wirklich niedrig wird, könnte es jemals killen y unabhängig vom Typ nach seinen Prioritätsregeln

Verwandte Themen