Ich arbeite an einer Android-App, die eine Mischung aus Java und Native-Code ist. Ich stehe vor einem Problem im Zusammenhang mit der Synchronisierung verschiedener Thread-Daten. Hier ist eine Szenerie.Sync der CreateView von mehreren Fragmenten
In meiner Haupttätigkeit habe ich eine Listenansicht. Wenn ich ein Element in der Listenansicht auswähle, muss ich 3 Fragmente erstellen, und ich muss auch ein Modell auf der nativen Seite erstellen, das Daten für verschiedene Fragmente bereitstellt. Das Ergebnis der Arbeit auf der nativen Seite wird mir einige Details über den TextView-Wert und Schaltflächenstatus in den drei Fragmenten geben. Also in der onclick-Handler der Listview, ich erstellt einen Thread t2, der die auf der nativen Seite mit JNI-Aufruf startet und auf dem UI-Thread t1, habe ich meine Fragmente erstellt. Wenn der t2 fertig ist, sendet er eine lokale Absicht, so dass die Aktivität weiß, dass der native Code bereit ist. Bei der Behandlung dieser Absicht muss ich die UIs von Fragmenten wie Schaltflächenzuständen und Textansichten aktualisieren. Aber ich stehe hier vor einer Race-Bedingung, dass manchmal CreateView der Fragmente komplett ist und manchmal nicht. Daher kann ich meine Fragmente nicht richtig in der Handhabung der Absicht aktualisieren.
So brauche ich einen Mechanismus, wo in der Behandlung der Absicht ich auf die CreateView für alle Fragmente zu vervollständigen warten und dann kann ich UI der Fragmente aktualisieren. In Zukunft kann ich 1-2 weitere Fragmente haben.
Also was ist der beste skalierbare Mechanismus, wo ich auf CreateView komplette Aktion des Fragments warten kann und sie dann aktualisieren kann. Beachten Sie, dass jedes der Fragmente unabhängig voneinander ist.