質問

UDPパケットを受信できるAndroidアプリケーションを作成し、それらのそれぞれについて、OpenGLを使用して画面に新しいオブジェクトを表示する必要があります。

以下を試しました。OpenGLRendererクラスには、すべてのフレームがレンダリングされるオブジェクトの配列があり、呼び出されたときにこのリストに新しいオブジェクトを追加する関数を作成しました。

私の主なアクティビティでは、着信UDPパケットを扱う新しいスレッドを作成しました。新しいパケットが受信されるたびに、新しいオブジェクトをリストに追加する関数を呼び出すハンドラーにメッセージが送信されます。

これは最初に機能します。パケットが受信されると、オブジェクトが表示されますが、すぐにアプリケーションを再度開始すると、パケットが受信されていても新しいオブジェクトが表示されなくなりました(ログを通して表示できます。 )。

これは正しい方法ですが、何かが欠けているのですか、それとも期待される結果を達成するより良い方法はありますか?

役に立ちましたか?

解決 2

私は問題の原因となっているものを見つけました。ネットワークスレッドが問題でした。アプリケーションが閉じられた後も実行され続け、したがって間違ったリストを更新します。 ondestroy()が呼び出されたときに、スレッドを停止する必要がありました。

それを修正するために、「停止」フラグを追加してwhile(true)ループを壊しましたが、それでもうまくいかないので、データ(s.receive())を待っているソケットを閉じることでした。

他のヒント

私は問題を解決することができました。オブジェクトのリストを静的と宣言する必要がありましたが、その理由はわかりません。アクティビティが破壊され、再起動された後、「追加」関数によって変更されるリストとレンダリングされるオブジェクトのリストとの間に混乱があるようです。

誰かが何が起こっているのかを説明できればいいでしょう。ありがとう!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top