Я разрабатываю приложение, в котором я отправляю местоположение устройства на сервер за каждый мин. Я использую Handler здесь, чтобы запланировать свою задачу. После нажатия на кнопку STOP обработчик должен прекратить выполнение. Я не могу этого добиться. Пожалуйста, найдите мой код ниже.Как остановить обработчик, который работает на интервале (1 мин)?
public void callSpecficTime() {
timer = new Timer();
doAsynchronousTask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
try {
Log.e("TImeOnSchedule", String.valueOf(inTime));
if(inTime==5)
{
new PostDataAsyncTask().execute();
}
} catch (Exception e) {
// TODO Auto-generated catch block
}
}
});
}
};
timer.schedule(doAsynchronousTask, 0, 60000);
}
StopTask код:
public void stopTask(){
if(doAsynchronousTask!=null){
Log.d("TIMER", "timer canceled");
handler.removeCallbacks(doAsynchronousTask);
// timer.cancel();
doAsynchronousTask.cancel();
}
}
Я попытался stopService
, removeCallbacks
, но это не сработало. Может ли кто-нибудь предоставить мне решение для этого?
ОБНОВЛЕНО
public void onClickButton(View v)
{
if(v.getId()==R.id.IBstart)
{
callAsynchronousTask();
callSpecficTime();
}
else if(v.getId()==R.idIBstop)
{
stopTask();
}
}
Это ** callAsynchronousTask() **
public void callAsynchronousTask() {
new PostDataAsyncTask().execute();
}
Я отправляю данные дважды. Первый раз, когда пользователь нажимает кнопку START, а затем я запускаю таймер для выполнения на каждый мин.
время.purge() справа? Я это сделал. Все еще проблема такая же. Я получаю 'doAsynchronoursTask' как' null' –