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每一秒。所以制作你自己的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 循环中添加它

线程.sleep(1000);

于 2012-08-02T08:47:45.490 回答