0

我怎样才能设置一个计时器/超时,以便每当执行一个方法时,应该有大约 1 分钟才能再次执行它。例子

if (A>B){
Toast.makeText(getApplicationContext(), "Text HERE", Toast.LENGTH_SHORT).show();
}

我不希望吐司被垃圾邮件。这样如果条件始终满足,它只会每 1 分钟显示一次 toast。

谢谢!

4

4 回答 4

2

您可以记录上次执行该操作的时间,如果时间不够,则拒绝再次执行。

例如:

 private long lastRunTime = 0;
 void maybeDoSomething() {
     long now = System.currentTimeMillis();
     if ((now-lastRunTime) > (60 * 1000)) {
        //do something here
        lastRunTime = now;
     }
 }

System.currentTimeMillis() 是一个合理的短期时间源,对于更长的超时,您可能需要调查其他时钟。

于 2013-09-20T18:54:38.537 回答
1

您可以只检查当前时间。

在方法运行时设置一个变量,并在条件为真时检查它

if (A>B && System.currentTimeMillis() > interal){
    Toast.makeText(getApplicationContext(), "Text HERE", Toast.LENGTH_SHORT).show();
    interval = System.currentTimeMillis() + 6000;   // this should add 1 minute to the current time
}

制作interval一个long和一个成员变量...可能初始化为0。

于 2013-09-20T18:52:44.753 回答
0

在 android 中使用 Handler 在特定时间后执行某些任务...下面的代码将在 5000 毫秒后执行某些任务。您可以在 Runnable 类的 run() 方法中为任务指定代码。

    boolean methodRunnable = true;

    if(methodRunnale){
        // Run method 
        doSomeTask();
    }else{
       //Wait for 1 minute
    }

    void doSomeTask(){
        methodRunnable = false;

        Handler handler = new Handler();
        Runnable r = new Runnable() {
        public void run() {
           methodRunnable = true;
        }
    };
    handler.postDelayed(r, 60*1000);
   }
于 2013-09-20T18:53:18.227 回答
0

如果您的主要目标只是避免“Toast Spamming”,则可以很容易地避免这种情况。请参阅对避免在 Android 中堆积 Toast 的最佳方法的解决方案。它还包含一个完整的代码示例。

于 2013-09-20T18:57:52.460 回答