2011-06-05 37 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); 
    } 
}