Java android-图像视图滚动导致崩溃?
我有一个功能,可以滚动我的图像视图,使其每0.1秒下降5个像素,但一旦我运行此功能,我就会发现Java android-图像视图滚动导致崩溃?,java,android,android-imageview,Java,Android,Android Imageview,我有一个功能,可以滚动我的图像视图,使其每0.1秒下降5个像素,但一旦我运行此功能,我就会发现抱歉,应用程序已停止响应 您可以在下面查看我的代码: void startGameLoop(){ boolean alive=true; while(alive){ int x = theSprite.getScrollX(); int y = theSprite.getScrollY(); y-=5; theSp
抱歉,应用程序已停止响应
您可以在下面查看我的代码:
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();
}
}
}
如果您将此代码放入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);
}
请添加logcat!到目前为止,我觉得这是一个永恒的循环。我的意思是什么时候将是
alive==false
肯定有一种方法可以通过睡眠来做到这一点?你这样做的方法似乎非常复杂,加上我似乎无法让它工作,我得到了一堆错误。不,如果你睡在主线程上,你的应用程序将睡眠。延迟处理程序未在主ui线程上休眠。它是一个线程,可以在UI中更改内容。只需放置handler=newhandler();和startTimer()代码>在oncreate()中,它将每400毫秒启动一次