我正在使用surfaceview和myThread创建一个Android应用程序游戏。我有一个问题,我需要使用Thread.Join(),在框架的中间,这意味着我将加入线程,而他的运行功能正在工作,它使我的应用程序停止几秒钟然后崩溃。我的问题是:如何在运行功能中使用Join()函数或不使用它来停止线程。谢谢 ! 在这里我试图阻止线程。
for(i <- -8.0 to 8.0 by 0.1)
这是我的线程运行功能:
boolean retry = true;
int counter = 0;
while (retry && counter < 1000) {
try {
mainThread.setRunning(false);
mainThread.join();
retry = false;
} catch (Exception e) {
Log.e("Thread","Failed to stop thread.");
}
counter++;
}
在onDraw方法中,我调用上面的代码,停止线程。 (supossly)
while(isAlive)
{
long start_time=System.nanoTime();
long wait_time;
long after_frame_time;
canvas=surfaceHolder.lockCanvas();
if(canvas!=null)
{
gameController.updateAll();
gameController.drawAll(canvas);
surfaceHolder.unlockCanvasAndPost(canvas);
}
after_frame_time=System.nanoTime();
wait_time=(1000/FPS)-(after_frame_time-start_time)/10000000;
try
{
Thread.sleep(wait_time);
}
catch (Exception e)
{
e.printStackTrace();
}
}
在Draw方法中除了这个代码之外还有很多东西,但是这个事情发生在用户停止应用程序之后,然后回到它,所以它绘制一次屏幕,然后使用& #34; PauseTheGame()&#34; ,问题是我的线程崩溃了,卡住了。我该怎么办 ? 谢谢!!!