Android:如何杀死一个可运行的线程

时间:2018-04-10 19:49:12

标签: android multithreading timer runnable

我正在尝试在我的小安卓游戏的不同线程上设置计时器。当时间到了,我想通过对话显示游戏。 问题是当时间到了,游戏结束时会继续生成对话框,这就是为什么我认为线程正在运行并且它没有结束。有人可以给我一些关于我做错的提示吗?

    m_handler = new Handler();
    m_handlerTask = new Runnable()
    {
        @Override
        public void run() {
            if(timeleft>=0)
            {
                timerTextView.setText("seconds remaining: " +Integer.toString(timeleft));
                timeleft--;
            }
            else
            {
                timerTextView.setText("Done!!!?");
                m_handler.removeCallbacks(m_handlerTask); // cancel run

                createGameOverDialog();

        }
            m_handler.postDelayed(m_handlerTask, 1000);
        }
    };
    m_handlerTask.run();


}

非常感谢

1 个答案:

答案 0 :(得分:0)

你永远不会在结束区中返回,所以它总是继续发布延迟:

    m_handler = new Handler();
    m_handlerTask = new Runnable()
    {
        @Override
        public void run() {
            if(timeleft>=0)
            {
                timerTextView.setText("seconds remaining: " +Integer.toString(timeleft));
                timeleft--;
            }
            else
            {
                timerTextView.setText("Done!!!?");
                m_handler.removeCallbacks(m_handlerTask); // cancel run
                createGameOverDialog();
                return; //here
        }
            m_handler.postDelayed(m_handlerTask, 1000);
        }
    };
    m_handlerTask.run();


}