Android tötet manchmal Gewalt Anwendung

9

Ich beginne Tätigkeit A, dann Tätigkeit B.
Ich drücke den Home Button und warte lange Zeit.
Wenn ich die Anwendung wieder aktiviere, wird die Kraft gestoppt.

%Vor%

Wie man es repariert?

    
quelle

6 Antworten

0

Übergeben Sie etwas als Absicht zusätzlich zur Aktivität? Falls nicht, versuchen Sie, den sauberen Master von Ihrem Gerät zu entfernen.

    
MarkySmarky 07.03.2016 18:25
quelle
0

ist Ihre App undicht? Wenn das Telefon im Speicher fast leer ist, wird die Memory-Schwein-App beendet. Wenn für diese Aktivität ein Prozess ausgeführt wird, übertragen Sie ihn an einen Dienst, und rufen Sie startForeground () in oncreate auf.

    
hepizoj 09.03.2016 06:36
quelle
0

Eine Aktivität neu erstellen sagt:

  

Das System kann Ihre Aktivität auch zerstören, wenn es gerade gestoppt wird   und wurde seit langer Zeit nicht mehr verwendet oder die Vordergrundaktivität   benötigt mehr Ressourcen, sodass das System den Hintergrund herunterfahren muss   Prozesse, um Speicher wiederherzustellen.

Sie können also nicht verhindern, dass das System Ihre Anwendung beendet.

Um es zu überwinden, sollten Sie onRestoreInstanceState außer Kraft setzen Methode. In diesem Fall können Sie den Status der Aktivität speichern, wenn das System sie beendet und dann wiederherstellen, wenn Sie zu dieser Aktivität zurückkehren.

Eine weitere Option ist die Implementierung eines eigenen IntentService .

Zitat aus Services API-Leitfaden:

  

Das Android-System wird einen Dienst nur dann anhalten, wenn der Arbeitsspeicher knapp ist   und es muss Systemressourcen für die Aktivität wiederherstellen, die Benutzer hat   Fokus.

    
Dmitry Bulashevich 09.03.2016 18:41
quelle
0

Anscheinend ist der Android-Speicher begrenzt, sodass Virtual Machine jedes nicht benötigte Code entfernen kann.

Sehen Sie sich die Methode Aktivitätslebenszyklus an, besonders in onResume und stellen Sie sicher, dass Sie das perfekt verstehen. So viele Zeitanwendung stürzt nur für unsachgemäße Verwendung Methoden des Aktivitätslebenszyklus ab.

Ein weiterer wichtiger Aspekt ist die Berücksichtigung des Designs für die Aktivität. Unabhängig davon, was mit den Persistenzdaten passiert ist, sollte Ihre Aktivität mit einigen Standardwerten auf der Benutzeroberfläche angezeigt werden. Also Annahme ist so, wenn ich Daten habe, die ich zeige, wenn ich nicht tue, ist mir wirklich egal . Ihre Benutzeroberfläche sollte niemals mit oder ohne Daten abstürzen . Sie können Ressourcen verwenden, zum Beispiel String.xml , dimens.xml, um einige Standardwerte zu speichern oder sogar in Layouts.

Wenn Sie immer noch mit der Singleton-Klasse arbeiten möchten, ist das völlig in Ordnung, aber stellen Sie sicher, dass Sie jedes Mal, wenn Sie versuchen, auf Ihr Singleton zuzugreifen, die folgende Überprüfung durchführen.

%Vor%

getInstance() Methode gibt nicht nur die aktuelle Instanz zurück, sondern stellt auch sicher, dass

  • Es initialisiert alle Objekte und Variablen
  • Andere Singleton-Methoden als Instanzmethode

Nicht statisch auf Daten von einer Aktivität zu einer anderen zugreifen. Es ist nicht gut für Android speziell für das Typproblem, mit dem Sie jetzt konfrontiert sind, und es ist auch nicht sehr gut OOP-Programmierpraxis.

Ich empfahl SharedPreference . Zu viel bessere Möglichkeit, Daten zu persistieren, wenn dies Ihre Anforderung erfüllt.

Wenn Sie Daten von verschiedenen Android-Komponenten wie Activity, Service oder BroadcastReceiver weiterleiten möchten, können Sie sie in ein Paket einfügen und als Absicht senden. Und wie immer sind sie SQLLite Datenspeicher, Datei IO etc etc.

Hoffe, das wird dir helfen.

    
Hiren Patel 10.03.2016 04:38
quelle
0

Soviel ich weiß, du kannst nichts dagegen tun !!! das ist das Verhalten von Android Garbage Collection System!

Wie ich mich erinnere, macht der Android Garbage Collection selbst, wenn Sie eine Aktivität für eine lange Zeit im Hintergrund nicht verwenden, wird es Müll vom System gesammelt werden, um RAM frei für andere Anwendungen und Prozesse zu machen.

>

Wenn Sie Informationen zu dieser Aktivität haben, die Sie behalten möchten, speichern Sie sie hier;

%Vor%

Wenn Sie zu dieser Aktivität zurückkehren,

%Vor%

das ist alles, was Sie tun können.

    
Omid Heshmatinia 07.03.2016 13:27
quelle
0

Wahrscheinlich wird Ihre Anwendung wegen einer Speicherüberlastung von einem Android-Betriebssystem gelöscht oder es kann vorkommen, dass ein bestimmter Prozess in Ihrem Hauptthread ausgeführt wird. Sie müssen dies überprüfen. Überschreiben Sie auch die OnResume-Funktion und prüfen Sie, welche Ergebnisse Sie haben bekommen.

    
user2523529 10.03.2016 07:28
quelle

Tags und Links