1

在 for 循环中,有一个调用 handler.post() 的方法。for 循环内部有一条日志语句,它打印了 16 次日志消息(表示 for 循环执行了 16 次)。同样,run() 中还有一条日志消息,但不幸的是,应用程序打印了这条日志消息 300 次(大约),理想情况下应该只打印 16 次。有人可以指导我理解错误吗?

代码片段是:

     do
    {
      final Handler handler = new Handler(); 
      System.out.println("KKKKKKKKKKKKKKKKKKKKKKKKKKKK");
      handler.post(new Runnable() {
        @Override public void run() { 
            System.out.println("IIIIIIIIIIIIIIIIIIIIIIIIII");

              // Post again 16ms later.
               boolean booleanHandler= handler.postDelayed(this, 32); 
               System.out.println("******************************"+booleanHandler);
            } });
   }
while(16 times)

编辑:如果条件已删除

4

3 回答 3

0

这样做:

//declare like this
private Handler handler = new Handler();

// call in oncreate()
handler.postDelayed(runnable, 30000); //30sec

//inside this function which u have to run
private Runnable runnable = new Runnable() {
    public void run() {


        handler.postDelayed(this, 30000);
    }
};
于 2013-02-26T08:50:37.963 回答
0

这是对处理程序的无限调用,因为 t 的值似乎不会在处理程序内部更改

于 2013-02-26T08:18:19.383 回答
0

问题在于变量 t。如果 (t >= 0 && t <= 1.0) 为真,那么您的代码会一次又一次地将自己发布到处理程序中,直到 t 被更改。因此,如果您想要执行 16 次,则不应在 Runnable 中调用 handler.post() 或在执行此操作之前更改 t 。

于 2013-02-26T08:32:07.087 回答