當你有一個surfaceView類,用於動畫/遊戲/ ...你在同一個類中有onTouchEvent()方法和繪圖/屏幕刷新方法。現在我只想睡onTouchEvent方法,所以它不會每秒調用-80次,並且溢出cpu(並因此導致延遲)。問題是,如果我睡這個班,它也會停止繪圖/更新/刷新。什麼可能是一個很好的解決方案呢?如何在不溢出onTouchEvent的情況下繼續更新屏幕? (android SurfaceView)
編輯
@tanner,這確實是我想要,要停止的onTouchEvent()被過於頻繁地調用。我的嘗試:
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.d("firstTest",Integer.toString(event.getAction())); //shows up
if (!sleeper.CurrentlySleeping) {
Log.d("2ndTest",Integer.toString(event.getAction())); //not showing up
~~ some calculations and stuff ~~
。
public class TouchSleeper extends Thread {
// If Thread is sleeping or not.
public static Boolean CurrentlySleeping;
public TouchSleeper() {
CurrentlySleeping = false;
this.setPriority(MIN_PRIORITY);
}
@Override
public void run() {
try {
while (true) {
CurrentlySleeping = true;
TouchSleeper.sleep(50);
CurrentlySleeping = false; }
~end~
首先從我的SurfaceView類的一段代碼。類/線程的第二部分,它不斷更改布爾值。注意我的第一個Log.d是如何返回的,第二個不是。這告訴我CurrentlySleeping永遠不會是假的?我還沒有弄清楚......?
@usealbarazer我不能真正給你一個答案,直到我明白你想要在你的應用程序中做什麼。當onTouchEvent()應該關閉或什麼時候不應該控制什麼?我可以告訴你,你不想循環,因爲這會導致應用程序無響應。我發佈了一個更新到我的答案,看看這個。 – 2011-06-15 15:51:08
@usealbarazer現在有更新......無法讓我的更新首先完成。 – 2011-06-15 16:36:20
最近的問題:是不是有一些方法來降低onTouchEvent的頻率甚至被調用,而不是僅僅阻止methodbody中的代碼?導致主要的性能下降來自onTouchEvent(),甚至被android頻繁調用。 – usealbarazer 2011-07-01 22:37:00