Ich bin auf der Suche nach einer technischen Antwort, wie die Android-Robospice-Bibliothek den Aktivitätszyklus verwaltet. Von der Begleit-Seite.Wie verwaltet Robospice den Aktivitätszyklus?
https://github.com/octo-online/robospice/wiki/Starter-Guide
„Als innere Klasse Ihrer Aktivität (oder einem anderen Kontext), eine RequestlListener hinzufügen, die die Benutzeroberfläche aktualisieren Kümmere dich nicht um Speicherlecks, verwaltet RoboSpice Ihre Tätigkeit des Lebenszyklus."
Meine Frage ist, wie Robospice automatisch die Anfrage Listener aktualisiert, so dass es immer noch in der Lage ist, den richtigen Listener mit dem richtigen Kontext nach einer Rotation und nachdem die Aktivität zerstört und als neue Instanz neu erstellt wurde?
Ich habe versucht, den Quellcode Reverse Engineering haben, aber noch keine Antwort gefunden:
https://github.com/octo-online/robospice
Wenn Sie also keinen requestCacheKey bereitstellen und mehrere Instanzen derselben Aktivität zur gleichen Zeit ausgeführt werden, funktioniert addListenerIfPending weiterhin ordnungsgemäß? Oder gibt es in diesem Fall nicht genügend Informationen? Dies ist wahrscheinlich ein unwahrscheinliches Szenario, aber ich bin neugierig. – craigrs84
@snicolas, ich bin neugierig, wenn Sie nicht aufrufen, sollteStop() (oder die nicht-asynchrone Methode) ruft die Bibliothek nicht zu diesen Listenern für Aktivitäten, Fragmente, Services, etc? Ohne zu viel durch die Quelle zu graben und basierend auf meiner frühen Nutzung und dem Testen Ihrer Bibliothek, würde ich eine Ausnahme erhalten, wenn ich einen Rückruf zu einem Objekt bekommen hätte, das "gestorben" war. Auch die Bibliothek ist großartig, bitte mach weiter so! – AllDayAmazing
Wenn Sie nicht sustopStop aufrufen, werden Listener ausgelöst. Dies kann zu Abstürzen und Speicherlecks führen, da Listener oft innere Klassen sind und einen Verweis auf eine Aktivitätsinstanz enthalten, die zerstört worden wäre, und sie kann sogar abstürzen, wenn Sie beispielsweise in Ihren Listenern ViewVieById finden. Ich denke du hast es verstanden, wollte nur klarstellen. – Snicolas