В моем приложении у меня есть кнопка, которая запускает AsyncTask, которая загружает данные с координатами для карт Google, а затем рисует маркер на карте в следующих координатах. Я хочу запускать его каждые 10 секунд, пока пользователь снова не нажмет кнопку.Запуск AsyncTask каждые 10 секунд до отмены
Вот мой код для обработчика:
class handleMap{
Handler mHandler = new Handler();
Runnable mTask = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while(btnRefreshPressed == false){
try{
new getGoogleMap().execute();
mHandler.postDelayed(mTask, INTERVAL);
Thread.sleep(INTERVAL);
} catch(Exception e){
System.out.println(e.toString());
}
}
}
};
public void starReapetingClass(){
hMap.starReapetingClass();
}
public void stopDoing(){
mHandler.stopDoing();
}
}
И в кнопку MENU, где она называется:
case R.id.id_Refresh:
handleMap hMap = new handleMap();
if(btnRefreshPressed == true){
menuItem = item;
menuItem.setActionView(R.layout.progressbar);
menuItem.expandActionView();
fRun += 1;
btnRefreshPressed = false;
hMap.run();
}else if(btnRefreshPressed == false){
if(fRun > 0){
menuItem.collapseActionView();
menuItem.setActionView(null);
}
btnRefreshPressed = true;
hMap.stopHandler();
}
Это в настоящее время вызывает к зависанию приложения, и система выдает диалог о том, что приложение не отвечает и спрашивает, хочу ли я закрыть или подождать.
Я подозреваю, что это связано с оператором while, но я не получаю никаких ошибок в logcat. Спасибо заранее.
Эй, спасибо за ваш ответ. Где я должен вставить это? –
Допустим, у вас есть кнопка, которая запускает все вещи, поэтому поместите ее в 'onButtonClick()' –
. Я обновил свой вопрос, как я попытался реализовать ваш ответ, и он работает, я вижу, как я получаю данные, но приложение все еще зависает. –