Fragmentaktivität - App starb, kein gespeicherter Status

8

Ich stehe für eine sehr kleine Anzahl meiner Nutzer vor einem sehr verwirrenden Problem. Der Fehler tritt auf, wenn innerhalb eines Fragments eine Schaltfläche gedrückt wird, die eine andere Fragmentaktivität startet. Hier ist der Stack-Trace:

%Vor%

Aufgrund dieser Fehlerzeile:

%Vor%

Ich habe viele Artikel über Fragment-gespeicherte Zustände gelesen, aber keine scheint unter meinen Umständen zu gelten, eher für die Fragmente selbst, die in der Stack-Spur nicht erwähnt werden. Die anderen Beiträge schlagen vor, jedes Fragment hinzuzufügen:

%Vor%

Ich überschreibe derzeit die onCreate-Methode in keinem meiner Fragmente.

Ich habe auch vorgeschlagen, das zu jedem Fragment hinzuzufügen:

%Vor%

Abgesehen von der Tatsache, dass es nur für eine sehr kleine Anzahl von Benutzern passiert, ist das am meisten verwirrende Problem mit dem verwendeten Kontext:

%Vor%

Meine Anwendung hat einen Vordergrund-Dienst, und wenn ich stattdessen den statischen Kontext dieser Methode (durch eine statische getServiceContext () -Methode) in der obigen Absicht verwende, tritt das Problem für die Benutzer nicht mehr auf und die Fragment-Aktivität wird korrekt geöffnet. p>

Ich verstehe nicht, warum die Verwendung eines anderen Kontexts das Problem verhindern sollte , aber ich hoffe, dass es mit den von mir gelieferten Informationen für jemanden Sinn macht!

Ich kann den FragmentPagerAdapter-Code angeben, den ich verwende, wenn er sich als relevant erweist, aber es ist ziemlich Standard.

Ich danke Ihnen im Voraus

BEARBEITEN - Etwas sehr wichtiges, das ich vergessen habe hinzuzufügen. Dies führt nicht zum Absturz der App . Stattdessen wird die Aktivität, in der sich das Fragment befindet, sofort neu gestartet.

ANTWORT - Dies wurde verursacht, weil ich System.exit(0) unter Umständen anrufe, die ich nur für möglich hielt, wenn der Benutzer die Speicherbelegung der App "leeren" wollte. Ich habe mich geirrt und es könnte auch angerufen werden, wenn das Gerät des Benutzers mit wenig Speicher arbeitet. @ Beworker's Antwort unten ist als korrekt markiert, da er ActivityManagerService.handleAppDiedLocked() darauf hingewiesen hat.

    
brandall 21.08.2013, 18:32
quelle

1 Antwort

10

Ich habe den Android-Quellcode für die Nachricht im Stack-Trace durchgesehen und herausgefunden, dass er von ActivityManagerService.handleAppDiedLocked() method stammt. Beschreibungen dieser Methode sagt "Hauptfunktion zum Entfernen eines vorhandenen Prozesses aus dem Aktivitätsmanager als Ergebnis dieses Prozesses weg. Löscht alle Verbindungen mit dem Prozess." Dies geschieht, wenn Anwendung getötet wird. Es kann vom System, von einer anderen Anwendung (z. B. einer Task-Manager-App) oder wenn die Anwendung selbst beendet wird (z. B. System.exit(0) ) abgebrochen werden.

    
sergej shafarenka 21.08.2013, 18:55
quelle