2014-09-26 42 views
1

我想問一下,如果有更好的方法多次調用一個方法,並在每次調用之間給出5秒的延遲時間。Android如何多次調用方法,並在它們之間有一個延遲

但我真的很想調用Toas()方法大約7次,並且使用下面的代碼,它看起來不錯。

謝謝你們

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ... 

CallMultipleToast(); 


........ 



    private void CallMultipleToast(){ 

      Runnable call_1 = new Runnable() { 
       @Override 
       public void run() { 
        Toast("Message one"); 


         Runnable call_2 = new Runnable() { 
          @Override 
          public void run() { 
           Toast("Message two"); 


            Runnable call_3 = new Runnable() { 
             @Override 
             public void run() { 
              Toast("Message three"); 
              //CAN I ADD MORE 
             } 
            };//end call_3 
            new Handler().postDelayed(call_3, 5000); 


          } 
         };//end call_2 
         new Handler().postDelayed(call_2, 5000); 

       } 
      };//end call_1 
      new Handler().postDelayed(call_1, 5000); 


    } 





    private void Toast(String message){ 
     Toast.makeText(this, message, Toast.LENGTH_LONG).show(); 
    } 
+0

你想什麼具體使用情況能有這個? – 2014-09-26 00:58:09

+0

無需嵌套runnables或具有多個處理程序。一個處理程序應該足夠了。如果所有可運行的程序都顯示一個吐司,只需創建一個將該消息作爲構造函數參數的子類。 – 2014-09-26 01:42:05

+0

謝謝你們的建議 – Joolah 2014-09-26 01:52:20

回答

3

也許你可以做這樣的:

private void CallMultipleToast(){ 
    Thread t = new Thread(){ 
     @Override 
     public void run(){ 
      try { 
       for(i=0;i<7;i++){ 
        Toast("Message "+(i+1)); 
        sleep(5000); 
       } 

      } catch (InterruptedException ex) { 
       Log.i("error","thread"); 
      } 
     } 
    }; 
    t.start(); 
} 
0

試試這個:

final int DELAY= 5000; 
int count = 0; 
String[] msgs = {"one", "two", "three", "four", "five"}; 
Handler handler = new Handler(); 
Runnable runnable = new Runnable() { 
    @Override 
    public void run() { 
     if (count < 5) { 
      Toast(msgs[count]); 
      handler.post(runnable); 
     } 
     count++; 
    } 
}; 

handler.postDelayed(runnable, DELAY); 
相關問題