2014-09-26 60 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); 
相关问题