Frage

Ich muss eine Android -Anwendung schreiben, die UDP -Pakete empfangen und für jeden von ihnen ein neues Objekt auf dem Bildschirm mit OpenGL anzeigen kann.

Ich habe Folgendes ausprobiert: Meine OpenGL -Renderer -Klasse hat eine ArrayList von Objekten, die jeden Frame gerendert werden, und ich habe eine Funktion erstellt, die dieser Liste neue Objekte hinzufügt, wenn sie aufgerufen werden.

In meiner Hauptaktivität habe ich einen neuen Thread erstellt, um mit den eingehenden UDP -Paketen umzugehen. Jedes Mal, wenn ein neues Paket empfangen wird, wird eine Nachricht an den Handler gesendet, der die Funktion aufruft, die der Liste ein neues Objekt hinzufügt.

Dies funktioniert zunächst, wenn das Paket empfangen wird, wird das Objekt angezeigt. Wenn ich jedoch zurück drücke und die Anwendung sofort starte, werden die neuen Objekte nicht mehr angezeigt, obwohl die Pakete empfangen werden (ich kann über das Protokoll erkennen ).

Ist dies der richtige Weg, aber ich fehlt etwas oder gibt es einen besseren Weg, um das erwartete Ergebnis zu erzielen?

War es hilfreich?

Lösung 2

Ich fand, was das Problem verursachte. Der Netzwerk -Thread war das Problem. Es würde weiter laufen, nachdem die Anwendung geschlossen wurde und daher die falsche Liste aktualisiert würde. Ich musste den Faden stoppen lassen, als der Ondestroy () gerufen wurde.

Um es zu beheben, fügte ich einige "Stop" -Flags hinzu, um die (wahre) Schleife (wahre) Schleife zu brechen, aber das würde immer noch nicht gut funktionieren. Der Trick war also, den Socket zu schließen, der auf Daten wartete (sceive ()).

Andere Tipps

Ich habe es geschafft, das Problem zu beheben. Ich musste die Liste der Objekte als statisch erklären, ich bin mir nicht so sicher, warum. Es scheint, als ob die Aktivität zerstört und neu gestartet wurde, es gab eine gewisse Verwirrung zwischen der Liste, die durch die Funktion "Hinzufügen" geändert wurde, und der Liste der dargelegten Objekte.

Es wäre schön, wenn jemand erklären könnte, was los war. Vielen Dank!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top