当您有一个用于动画/游戏/...的surfaceView 类时,您在同一个类中有 onTouchEvent() 方法和绘图/屏幕刷新方法。现在我只想让 onTouchEvent 方法休眠,这样它就不会被每秒调用 +-80 次并淹没 cpu(从而导致延迟)。问题是,如果我在这堂课上睡觉,它也会停止绘画。
**Edit88 我正在尝试停止过于频繁地调用 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 是如何返回一些东西的,而第二个没有。这告诉我 CurrentSleeping 永远不会是假的?我还没有弄清楚……?