1

ループ内にあるたびに、whileループ内で1秒ほど待機したい。

Runnableで試しました:

new Handler().postDelayed(new Runnable() 
{
    @Override
    public void run() 
    {
        int i=0;

        while(i<10){
            if(i%2 ==0){

                myTextView.setText("true");
            }
            else{

                myTextView.setText("false");
            }

            i++;
        }
    }
}, 1000);

このコードを実行すると、数分間空白のディスプレイが表示され、その後クラッシュしました。

ログキャット:

 ActivityManager      Reason: keyDispacthingTimeot

何が問題ですか?なるべくシンプルにしたいのですが…

助けてください!

4

2 に答える 2

5

sthg を非常にシンプルにしたい場合は、

Thread.currentThread();
Thread.sleep(1000);

:Adeelが言ったように、UIスレッドでスリープしないでください=)

編集:次のように sthg を実装する必要があります。

asyncTask、およびpublishprogress各1秒を使用したいと思います。したがって、独自のasyncTask<Void, Integer, Void>を作成し、doInbackgroundメソッドで:

protected Void doInBackground(Void... params) {
    int i=0;

    while(i<10){
        Thread.currentThread();
        try{
            Thread.sleep(1000);
        }catch(Exception e){
            return null;
        }

        publishProgress(new Integer(i));

        i++;
    }
}

次にonProgressUpdate、UI スレッドで実行されるメソッドを実装します。

protected void onProgressUpdate(Integer... progress) {
     int i = progress[0].intValue();
     if(i%2 ==0){
            myTextView.setText("true");
        }
        else{

            myTextView.setText("false");
        }
 }

ここにasynctasksに関するドキュメントがあります

于 2012-08-02T08:46:42.103 に答える
3

これをwhileループに追加してみてください

Thread.sleep(1000);

于 2012-08-02T08:47:45.490 に答える