在Android上停止线程

时间:2012-05-02 18:20:58

标签: android

我有更改屏幕颜色的代码。

但我不知道如何阻止这个帖子:

lin = (LinearLayout)findViewById(R.id.mainlayout);
        new Thread(new Runnable() {
            public void run() {
                while (finalStatus < 1) {
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    colorHandler.post(new Runnable() {
                        public void run() {
                            if(flag)
                            {
                             lin.setBackgroundColor(Color.BLUE);
                             flag = false;
                            }
                            else
                            {
                                lin.setBackgroundColor(Color.RED);
                                 flag = true;
                            }
                        }
                    });
                }
            }
        }).start();

我试着说:

Button btn = (Button) findViewById(R.id.button1);
        btn.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                Toast.makeText(getBaseContext(),"STOP",Toast.LENGTH_SHORT).show();
                finalStatus=1;
                lin.setBackgroundColor(Color.BLACK);
            }
        });

并且线程停止了,但屏幕是红色或蓝色,我需要黑色。

此外,如何在我停止后启动此线程?

2 个答案:

答案 0 :(得分:0)

我不确定获取背景为蓝色或红色的情况是什么,但我们假设将finalStatus设置为1.为了避免更改背景并仍然退出线程,您可以将其设置为不同的值在你的按钮点击监听器,让我们说111.在colorHandler.post之前添加以下条件将解决问题:

if (finalStatus == 111) {
    return;
}

答案 1 :(得分:0)

只需将lin.setBackgroundColor(Color.BLACK);代码放在外部线程run()方法中的While循环之后。并且不要忘记使用相同的处理程序,因为除了UI线程之外不会更新UI。