2012-11-20 107 views
0

我已經通過擴展「SurfaceView」創建了自己的自定義視圖類。然後我重寫onTouchEvent方法。兩個問題。android onTouchEvent工作

(1)即使我處理所有事情(我認爲)我需要甚至都調用super.onTouchEvent? (2)應該在新線程中完成工作嗎?我收到很多跳過了32幀!該應用程序可能在其主線程上做了太多工作 onTouchEvent是從UI線程中調用的嗎?

我的看法只不過是一根操縱桿,而對於觸摸事件,我只是用3或4行代碼移動對象的座標。

+0

我想添加註意事項,我遺留了一些導致問題的代碼。在我只是擴展View而不是SurfaceView之前,所以我在onTouchEvent中有一個postInvalidate方法調用。一旦我擴展了SurfaceView,我就想把它拿出來,因爲我在另一個線程中控制繪圖。 – Matthew

回答

4
  1. 這不是necessarey調用superOnTouchEvnet.But記住,如果你返回false它不會工作。因此如果您想處理事件,最好在完成任務後返回super.OnTouchEvent。如果對於某些情況或某些輸入您不想處理觸摸事件,則不使用超級方法只返回false。

  2. 是的。此方法由主UI線程處理。所以對於長時間的任務使用任何安全的方法,如使用不同的線程,asynctask或handler.post。