【发布时间】:2011-06-15 14:25:48
【问题描述】:
当您有一个用于动画/游戏/...的surfaceView 类时,您在同一个类中有onTouchEvent() 方法和绘图/屏幕刷新方法。现在我只想让 onTouchEvent 方法休眠,这样它就不会被每秒调用 +-80 次并淹没 cpu(并因此导致延迟)。问题是,如果我睡这堂课,它也会停止绘制/更新/刷新。有什么好的解决方案?
编辑
@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 是如何返回一些东西的,而第二个没有。这告诉我 CurrentSleeping 永远不会是假的?我还没有弄清楚……?
【问题讨论】:
标签: android multithreading animation sleep surfaceview