android parcelable, das auf eine andere parzellierbare zirkuläre Abhängigkeit verweist

8

Eher einfaches Szenario, aber ich konnte nichts über Google finden, also hier:

%Vor%

Dies wird den Stapel unweigerlich durchlaufen und überlaufen.

Meine Frage: Wie soll ich mit einer Situation umgehen, in der ich ein Objekt der oben genannten Typen zu einer neuen Aktivität durchlassen muss?

(für CommonsWare) Die parzellierbare Implementierung scheint tatsächlich nicht nach zirkulären Abhängigkeiten zu suchen und sie zu vermeiden. Stacktrace mit Klassennamen, die durch obige Namen ersetzt wurden:

%Vor%     
Skod 11.08.2013, 21:24
quelle

2 Antworten

1

Ich habe noch etwas darüber nachgedacht und zwei Workarounds gefunden, die nützlich sind, wenn sich jemand anderes im selben Boot befindet:

1) (Inspiriert von CommonsWare) Setzen Sie eine Flagge auf jeden Teil der Kette, um die Richtung anzuzeigen Nach oben ist die Hierarchie verlustreich in dem Sinne, dass alle Elemente der ContainerClass nicht wiederhergestellt werden können.

%Vor%

2) Hackish-Problemumgehung unter Verwendung einer statischen Hash-Tabelle, die jedem Objekt gewährt wird, kann durch seine parzellierbaren Attribute eindeutig identifiziert werden. (In meinem Fall habe ich den Primärschlüssel in meiner Datenbank in den Objekten).

%Vor%     
Skod 12.08.2013, 09:10
quelle
8
  

Dies wird den Stapel unweigerlich durchlaufen und überlaufen.

AFAIK, der Parzellierungsprozess behandelt keine kreisförmigen Objektdiagramme . Ich habe gerade ein Problem behoben, um dies besser zu dokumentieren .

Eine Umgehungslösung besteht darin, p.writeParcelable( _containerRef ); nicht zu verwenden. Stattdessen in ContainerClass , in Ihrem ContainerClass(Parcel in) -Konstruktor (oder wie auch immer Ihr CREATOR es behandelt), nach dem Einlesen Ihrer _items -Liste, iterieren Sie über diese Liste und teilen Sie jedem Kind seinen Elternteil mit.

    
CommonsWare 11.08.2013 22:26
quelle