0

「SurfaceView」を拡張して、独自のカスタム ビュー クラスを作成しました。次に、onTouchEvent メソッドをオーバーライドします。2 つの質問です。

(1)必要なものをすべて処理しても(私は思う)、両方ともsuper.onTouchEventを呼び出す必要がありますか?(2) 新しいスレッドで作業を行う必要がありますか? スキップされた 32 フレームを多く受信しています。アプリケーションがメイン スレッドで処理しすぎている可能性があります onTouchEvent は UI スレッドから呼び出されていますか?

私のビューは単なるジョイ スティックであり、オン タッチ イベントでは、3 行または 4 行のコードでオブジェクトの座標を移動するだけです。

4

1 に答える 1

4
  1. ここでは、superOnTouchEvnetを呼び出す必要はありませんが、falseを返すと機能しないことに注意してください。したがって、イベントを処理する場合は、タスクの終了後にsuper.OnTouchEventを返すことをお勧めします。一部のケースまたは一部の入力でtouchイベントを処理したくない場合は、superメソッドを使用せずにfalseを返します。

  2. はい。このメソッドはメインUIスレッドによって処理されます。したがって、長いタスクの場合は、さまざまなスレッド、asynctask、handler.postなどの安全な方法を使用してください。

于 2012-11-20T04:25:07.040 に答える