在线程中调用方法后,Android App崩溃了吗?

时间:2018-06-28 19:22:34

标签: java android

当前,在我的Android游戏中,有一个简单的线程在运行,每X毫秒将水平进度条减少1。我正在尝试实现一种方法,以便当进度栏达到0时,TextView变为“ Game Over”。 只要以此方式调用此函数,应用程序就会崩溃。我还正确地初始化了变量,因此该方法可以很容易地看到此TextView。

    public class MyThread extends Thread{
        @Override
        public void run(){
            while (counter > 0 && keepRunning){
                counter = counter - 1;
                android.os.SystemClock.sleep(calculateSleepTick());
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        progressTest.setProgress(counter);
                    }
                });
            }
            isGameOver();
        }
    }

    public void isGameOver(){
        scoreText.setText("Game Over");
    }

2 个答案:

答案 0 :(得分:2)

您的isGameOver函数设置UI元素的文本。您不能在main以外的线程上调用UI元素的函数。需要将其发布到UI线程中。

答案 1 :(得分:1)

您不能在非UI线程中更新UI。以这种方式致电isGameOver()

runOnUiThread(new Runnable() { @Override public void run() { isGameOver(); } });