0

画面を点滅させるアプリを構築しています.Androidアプリの背景色を常に変更し続ける必要があります

setBckgroundColor

基本的な背景色の変更は機能しましたが、次のコードを実装するとアプリがクラッシュします

void testthread()
{
    new Thread( new Runnable(){
        @Override
        public void run(){
            Looper.prepare();
            //do work here
            while(true)
            {
            background_White();
            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            background_Black();
            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            background_White();
            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            background_Black();
            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            }



        }
    }).start();

}

関数 background_White および background_Black

    public void background_White() {

    View flashScreen = findViewById(R.id.flashScreen);
    flashScreen.setBackgroundColor(Color.WHITE);

}

public void background_Black() {

    View flashScreen = findViewById(R.id.flashScreen);
    flashScreen.setBackgroundColor(Color.BLACK);

私の計画を機能させる方法について、私に洞察を提供してもらえますか?

4

1 に答える 1

1

よくわかりませんが、スレッドの代わりにHandler -Runnable を使用してみてください。

 handler.postDelayed(runnable, 1);  

private Runnable runnable = new Runnable() {
public void run() {  
    runOnUiThread(new Runnable() { 
        public void run() 
        { 
            //*change background here**/                       
        } 
    }); 

あなたのアプリの問題は、別のスレッドによる UI の更新によるものだと思います。したがって、上記の Handler-Runnable を使用してみてください。

于 2012-12-17T05:18:08.380 に答える