Zurück-Taste sehr langsam

Ich habe eine Android-App mit einer TabActivity, die 4 Registerkarten enthält - eine Listenansicht, eine Kartenansicht, eine andere Liste und eine Webansicht. In der Listenansicht kann ich auf ein Element tippen und es startet eine andere Aktivität. Durch Drücken von Zurück kehren Sie zur Registerkarte Aktivität zurück.

Wenn Sie jedoch nach dem Aufrufen der Registerkarte "Kartenansicht" in der Listenansicht zur zweiten Aktivität navigieren und dann die Taste "Zurück" drücken, bleibt die Anzeige ca. 3-4 Sekunden lang hängen. Sobald die Kartenansicht aufgerufen wurde, verschwindet dieses Problem erst, wenn die App beendet wird.

Noch ein paar Anmerkungen:

Die Kartenansicht kann auch eine andere Aktivität starten - und in diesem Fall funktioniert die Schaltfläche "Zurück" einwandfrei. Nur wenn die Registerkarte "Kartenansicht" beim Starten der zweiten Aktivität inaktiv ist, tritt das Problem auf.Testen auf zwei Geräten - Problem tritt bei Galaxy S auf, tritt bei Nexys 7 nicht auf.In logcat ist nichts offensichtlich, was ich sehen kann.Die App verwendet die Maps API V2 und unterstützt die lib für die Fragmentunterstützung.App ist in Mono geschrieben.

Mehr Info. Ich habe einige Protokollnachrichten in die Kartenaktivität für ihre Lebenszyklusereignisse eingefügt:

So wechseln Sie vom Karten-Tab weg:

02-12 18:53:43.841 I/MAPTEST ( 5031): OnSaveInstanceState
02-12 18:53:43.857 I/MAPTEST ( 5031): OnPause

Starten der zweiten Aktivität über die Registerkarte "Listenansicht":

02-12 18:54:06.900 I/MAPTEST ( 5031): OnSaveInstanceState
virtual void WebCore::Widget::show()
virtual void WebCore::Widget::show()
void WebCore::ScriptController::updatePlatformScriptObjects()
virtual void WebCore::Widget::show()
static bool WebCore::ResourceHandle::supportsBufferedData()
static bool WebCore::ResourceHandle::supportsBufferedData()
02-12 18:54:07.353 I/MAPTEST ( 5031): OnStop

Drücken der Zurück-Taste aus der zweiten Aktivität (dh: wenn die Pause auftritt):

-- Absolutely nothing in log cat --

Zurück zur Karte wechseln:

02-12 18:54:59.056 I/MAPTEST ( 5031): OnRestart
02-12 18:54:59.060 I/MAPTEST ( 5031): OnStart
02-12 18:54:59.064 I/MAPTEST ( 5031): OnResume

Was kann dazu führen, dass die Rückkehr zu einer Aktivität für 3-4 Sekunden blockiert wird?

Was kann ich alternativ noch tun, um dies zu diagnostizieren?

Mehr Info:

Gemäß dem Kommentar von michal-z, der unter DDMS ein Profil erstellt hat, wurde der größte Teil der Zeit für das Versenden, Layouten und Zeichnen von Nachrichten aufgewendet.

Außerdem habe ich versucht, das Kartenfragment zu entfernen, wenn die Kartenaktivität gestoppt wurde, und es wieder hinzuzufügen, wenn die Kartenaktivität gestartet wurde. Dadurch wurde das Verzögerungsproblem behoben, aber die Karte erinnert sich nicht an den Status, verliert alle Markierungen und wird langsam wieder angezeigt.

Ein weiteres Follow-up:

Dasnur Eine Lösung, die ich dafür finden könnte, besteht darin, das Fragment zu entfernen, wenn die Aktivität gestoppt wird, und es wieder hinzuzufügen, wenn es wieder aufgenommen wird - und auch die Kameraposition zu speichern. Ich habe auch versucht, das Fragment sowohl über den Fragment-Manager als auch direkt in der Kartenansicht ein- und auszublenden - kein Glück.

Antworten auf die Frage(0)

Ihre Antwort auf die Frage