2013-09-20 2 views
0

Как я могу поместить таймер/таймаут, чтобы всякий раз, когда выполняется метод, должно быть как 1 минута, прежде чем он может быть выполнен снова. ПримерКак поставить интервал после выполнения кода

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

Я не хочу, чтобы тост был послан спамом. Так что, если условие всегда выполняется, оно будет показывать только тост каждые 1 минуту.

Спасибо!

ответ

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 
} 

сделать intervallong и член переменной ... вероятно инициализируется 0.

0

Использование Handler в android выполнить некоторую задачу после определенного времени ... ниже код выполнит некоторую задачу после 5000 мс. Вы можете указать код для задачи внутри метода run() Runnable Class.

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); 
    } 
+0

Чтобы решить возникшее требование с помощью этого подхода, вам придется использовать ваш runnable, чтобы отключить флаг, который блокировал задачу shouldn't-happen-too-often. –

2

Вы можете записывать время, когда вы в последний раз делали эту операцию, и снижение, чтобы сделать это снова, если не хватает времени прошло.

Например:

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

System.currentTimeMillis() является разумным краткосрочным источником времени, в течение длительного времени ожидания вы можете захотеть исследовать другие часы.

Смежные вопросы