グリッドを移動する必要があるグリッド+タイルのアクティビティを作成しています。グリッド(およびタイル)はUIとは別のスレッドのsurfaceViewに描画されています(UIはタッチイベントを処理し、グリッドが処理するキューにプッシュします)。Android - キャンバスへの同時アクセスは安全ですか?
これはすべて問題ありません。私はタイルをドラッグできるツールバーを持っています。ツールバーは、相対レイアウトに追加されたビューです(UIスレッド上で実行されます)。
同期を何回使用しても、同時に書き込むことからキャンバスを保護しようとしても、最終的にはネイティブSIGSEV11が発生します。
いくつかの潜在的な解決策: - 失敗したり、非常に遅くなるので、タッチの対シングルスレッドでキャンバスにアクセスするすべてのものを描く
- は、一つのスレッドにすべてをかけます。
これには多分数日かかる大規模な変更が必要になります。
他に誰かが似たような問題を抱えていて、キャンバスへのアクセスをエラーなく同期できるかどうか疑問に思っています。
多くのありがとうございます。
しかし、グリッドを常に更新しているループがある場合は、入力を受け付けるスレッドに問題が発生します。 – alistair