0

グリッドを移動する必要があるグリッド+タイルのアクティビティを作成しています。グリッド(およびタイル)はUIとは別のスレッドのsurfaceViewに描画されています(UIはタッチイベントを処理し、グリッドが処理するキューにプッシュします)。Android - キャンバスへの同時アクセスは安全ですか?

これはすべて問題ありません。私はタイルをドラッグできるツールバーを持っています。ツールバーは、相対レイアウトに追加されたビューです(UIスレッド上で実行されます)。

同期を何回使用しても、同時に書き込むことからキャンバスを保護しようとしても、最終的にはネイティブSIGSEV11が発生します。

いくつかの潜在的な解決策: - 失敗したり、非常に遅くなるので、タッチの対シングルスレッドでキャンバスにアクセスするすべてのものを描く

  • を描画する可能性が高い

    • は、一つのスレッドにすべてをかけます。

    これには多分数日かかる大規模な変更が必要になります。

    他に誰かが似たような問題を抱えていて、キャンバスへのアクセスをエラーなく同期できるかどうか疑問に思っています。

    多くのありがとうございます。

  • 答えて

    0

    私は1つのスレッドで画面を更新するだけですが、複数のスレッドで画面の後ろのデータを更新して、画面の実際の更新を引き起こすフラグを設定させることができます。

    +0

    しかし、グリッドを常に更新しているループがある場合は、入力を受け付けるスレッドに問題が発生します。 – alistair

    関連する問題