2011-06-05 38 views

回答

1

只需使用处理程序。

处理程序有一个名为sendMessageDelayed(Message msg,long delayMillis)的方法。

只需以2秒的间隔安排您的消息。

这里是一个示例代码。

int i=1; 
    while(i<5){ 

    Message msg=Message.obtain(); 
    msg.what=0; 
    hm.sendMessageDealayed(msg, i*2); 
i++; 
    } 

现在这段代码会在每2秒钟后调用handler的方法handleMessage。

这里是你的处理器

和你做。

谢谢。

+0

当循环完成所有的消息都完成之前会发生什么。我认为控制权在继续。 – theblitz 2011-06-05 11:01:05

+0

当然循环在调用处理程序之前完成。这段代码实际上做的是排队所有的消息,并在2秒,4秒,6秒,8秒之后安排它们。在2秒46,8秒后,android本身调用方法handlemessage,在那里我们编写代码烤面包 – 2011-06-05 11:12:04

1

处理程序肯定是要走的路,但我只是postDelayed而不是处理空的消息。

同时扩展吐司和创建一个方法来显示它更长时间是很好的。

示例代码:

// make sure to declare a handler in the class 
private final Handler mHandler = new Handler(); 

// The method to show longer 
/** 
    * Show the Toast Longer by repeating it. 
    * Depending upon LENGTH_LONG (3.5 seconds) or LENGTH_SHORT (2 seconds) 
    * - The number of times to repeat will extend the length by a factor 
    * 
    * @param number of times to repeat 
    */ 
    public void showLonger(int repeat) { 
    // initial show 
    super.show(); 

    // to keep the toast from fading in/out between each show we need to check for what Toast duration is set 
    int duration = this.getDuration(); 

    if (duration == Toast.LENGTH_SHORT) { 
     duration = 1000; 
    } else if (duration == Toast.LENGTH_LONG) { 
     duration = 2000; 
    } 

    for (int i = 1; i <= repeat; i++) { 
     // show again 
     handler.postDelayed(new Runnable() { 

      @Override 
      public void run() { 
       show(); 
      } 
     }, i * duration); 
    } 
}