Кнопка Android Thread Sleep - PullRequest
       13

Кнопка Android Thread Sleep

0 голосов
/ 29 декабря 2010

Для моего проекта я пытаюсь выполнить Метод каждые 10 секунд, когда нажимаю кнопку «А». и он должен прекратиться, когда я снова нажму кнопку (вид включения / выключения).

это то, что я достиг: - /:

  ButtonA.setOnClickListener(new OnClickListener() {            
            @Override
            public void onClick(View v) {               

                        Handler handler = new Handler(); 
                    handler.postDelayed(new Runnable() { 
                         public void run() { 
                             showCurrentLocation();
                                Methodexecute();

                         } 
                    }, 10000); 
                }

                    }
        });

Как я могу повторять выполнение этого метода каждые 10 секунд, пока кнопка не будет нажата снова?

спасибо

Ответы [ 3 ]

1 голос
/ 30 декабря 2010
handler = new Handler();
ButtonA.setOnClickListener(new OnClickListener() {
    @Override public void onClick(View v) {

            handler.postDelayed(new Runnable() { 
                 public void run() {
                     if(taskIsRunning){
                         showCurrentLocation();
                         Methodexecute();
                         handler.postDelayed(this,10000);
                     }
                 } 
            }, 10000); 
        }
    }
});
1 голос
/ 29 декабря 2010

Подумайте об использовании Timer с TimerTask, планируя его каждые 10 секунд.Я надеюсь, что это будет работать:

Timer timer = new Timer();
    TimerTask task = new TimerTask() {

        @Override
        public void run() {
            //insert your methods here
        }
    };

    boolean taskIsRunning = false;
    if(taskIsRunning){
        timer.cancel();
        taskIsRunning = false;
    } else {            
        timer.schedule(task, 0, 10000);
        taskIsRunning = true;
    }
0 голосов
/ 30 декабря 2010

В вашем методе onClick вы также можете переключать задачу таймера следующим образом:

...
@Override public void onClick(View v) {
     ...
     toggleTask();
     ...
}
...

а затем, из кода Джонатана, что-то вроде

boolean taskIsRunning = false;
Timer timer;
TimerTask task = new TimerTask() {
    @Override
    public void run() {
        //insert your methods here
    }
};
private void toggleTask() {
    if(taskIsRunning){
        timer.cancel();
        taskIsRunning = false;
    } else {  
        timer = new Timer()          
        timer.schedule(task, 0, 10000);
        taskIsRunning = true;
    }
}
...