Android线程 - 如何在其运行函数中使线程连接?

时间:2017-01-18 13:41:37

标签: java android multithreading surfaceview

我正在使用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; ,问题是我的线程崩溃了,卡住了。我该怎么办 ? 谢谢!!!

0 个答案:

没有答案