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 に設定した場合と仮定しましょう。背景を変更してスレッドを終了しないようにするために、ボタンで別の値に設定できます。 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 に答える