我怎样才能设置一个计时器/超时,以便每当执行一个方法时,应该有大约 1 分钟才能再次执行它。例子
if (A>B){
Toast.makeText(getApplicationContext(), "Text HERE", Toast.LENGTH_SHORT).show();
}
我不希望吐司被垃圾邮件。这样如果条件始终满足,它只会每 1 分钟显示一次 toast。
谢谢!
您可以记录上次执行该操作的时间,如果时间不够,则拒绝再次执行。
例如:
private long lastRunTime = 0;
void maybeDoSomething() {
long now = System.currentTimeMillis();
if ((now-lastRunTime) > (60 * 1000)) {
//do something here
lastRunTime = now;
}
}
System.currentTimeMillis() 是一个合理的短期时间源,对于更长的超时,您可能需要调查其他时钟。
您可以只检查当前时间。
在方法运行时设置一个变量,并在条件为真时检查它
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。
在 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);
}
如果您的主要目标只是避免“Toast Spamming”,则可以很容易地避免这种情况。请参阅我对避免在 Android 中堆积 Toast 的最佳方法的解决方案。它还包含一个完整的代码示例。