0

我有这个用于更改屏幕颜色的代码。

但我不知道如何停止这个线程:

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);
            }
        });

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

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

4

2 回答 2

0

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

if (finalStatus == 111) {
    return;
}
于 2012-05-02T18:38:01.207 回答
0

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

于 2012-05-02T18:56:25.760 回答