我有一个功能,用于滚动我的图像视图,使其每0.1秒下降5个像素,但是一旦我运行此功能,我得到Sorry Application has stopped responding
您可以在下面查看我的代码。:
void startGameLoop(){
boolean alive=true;
while(alive){
int x = theSprite.getScrollX();
int y = theSprite.getScrollY();
y-=5;
theSprite.scrollTo(x, y);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
对此的任何帮助都将非常感激。
答案 0 :(得分:0)
如果将此代码Thread.sleep(100);
放在将要发生的主线程上。
请使用延迟处理程序。处理程序可以更改ImageView
之类的内容,因为它在主Ui线程上运行。
像这样......
private final Runnable timerRunnable = new Runnable() {
@Override
public void run() {
int x = theSprite.getScrollX();
int y = theSprite.getScrollY();
y-=5;
theSprite.scrollTo(x, y);
if (!closing)
startTimer();
}
};
handler = new Handler();
startTimer();
/**
* Start periodically callbacks.
*/
private void startTimer() {
runOnUiThreadDelay(timerRunnable, 400L);
}
public void runOnUiThreadDelay(final Runnable runnable, long delayMillis) {
handler.postDelayed(runnable, delayMillis);
}