【问题标题】:How to call a method multiple times in Android如何在Android中多次调用一个方法
【发布时间】:2014-11-19 23:24:00
【问题描述】:

我想问一下,如果有更好的方法在android中多次调用一个方法。 但我真正想知道的是,如何将 showToas("Message 1"); 调用延迟 10 秒,并且仅在调用下一个之后。

谢谢

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

    ...


    showToas("Message 1");
    showToas("Message 2");
    showToas("Message 3");
    showToas("Message 4");
    showToas("Message 5");
    showToas("Message 6");
    showToas("Message 7");
        ...


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

VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV

更新

这是我设法让它工作的地方。 给每个方法调用一个 5 秒的休息时间,但我认为有更好的方法来实现这个功能?你能建议吗。谢谢

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);


}

【问题讨论】:

  • 尝试使用Handler.postDealy()Runnable
  • 您好,我已经更新了我的代码,请您指教。谢谢

标签: java android performance function methods


【解决方案1】:
runOnUiThread(new Runnable() {
        public void run() {
            try {
                for(String str : array){
                    showToast(str);
                    Thread.sleep(10000L);
                }
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    });

【讨论】:

    【解决方案2】:
    public class ToastShow {
    private Context context;
    private Toast toast = null;
    public ToastShow(Context context) {
         this.context = context;
    }
    public void toastShow(String text) {
        if(toast == null)
        {
            toast = Toast.makeText(context, text, Toast.LENGTH_SHORT);
        }
        else {
            toast.setText(text);
        }
        toast.show();
    }
    

    }

    你可以多次调用 toastShow(String text) 它只会改变 toast 的内容

    【讨论】:

      【解决方案3】:

      您可以为此使用Timer

      //global variable counter
      int counter = 1;
      
      Timer t = new Timer();
      t.scheduleAtFixedRate(new TimerTask() {
      
          @Override
          public void run() {
              showToas("Message "+counter);
              counter++;
          }
      
      }, 0, 10000);  //It will be repeated every 10 seconds
      

      希望这会有所帮助。

      【讨论】:

      • 您好,我已经根据您的示例更新了我的代码,请您指教。谢谢
      • 它完全不同的代码,你用过。你试过定时器吗?
      • 抱歉,MysticMagic,我是想问你的。基于我的新更新代码。我可以使用计时器吗?
      【解决方案4】:

      试试这个方法

       Runnable r2=new Runnable() {
                      @Override
                      public void run() {
                          // TODO Auto-generated method stub
                           showToas("Message 1");
                      }
                  };
      
      new Handler().postDelayed(r2,1000);
      

      对其他人做同样的事情并增加时间延迟

      【讨论】:

      • 您好,我已经根据您的示例更新了我的代码,请您指教。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-17
      • 1970-01-01
      • 2020-04-17
      • 2012-11-08
      相关资源
      最近更新 更多