2013-10-09 2 views
1

Я попробовал оба соединения: Starting AsyncTask recursively after a gap of 5 minutes и Need advice new AsyncTask recursive callingКак вызвать AsyncTask рекурсивно в android?

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

Заранее благодарен !!!!

+1

Пожалуйста, покажите свой код, чтобы он мог быть рассмотрен и кто-то может помочь вам на основе того, что вы 'отсутствует. – bland

+0

Вы не можете (и не должны) вызывать AsyncTask «рекурсивно». Может быть, вы просто выбрали неправильное слово? Что вы пытаетесь достичь? – 323go

+0

@ 323го жаль парней для позднего ответа ..... я думаю, что ур прав, я не должен рекурсивно вызывать AsyncTask .... Я пытаюсь всплывать диалоговое окно с некоторыми сигналами тревоги, которые исходят из URL-адреса, и мы можем отклонить диалоговое окно ..... я хочу проверить URL-адрес через 10 секунд, найти новые данные о тревоге, и когда я получу новые данные, всплывающее окно снова появится. Это то, что я пытаюсь сделать. – Lacoste1112

ответ

2

Это повторяется каждые 1000 мс:

Handler handler = new Handler(); 
     Thread th = new Thread() { 
      public void run() { 

       // Asynctask 

       // delay 
       handler.postDelayed(this, 1000); 

       } 

      } 
     }; 
     th.start(); 

С handler.removeCallbacks(th) вы можете остановить его.

+0

лучший ответ для начинающего разработчика –

0

Создайте runnable, в котором вы снова и снова запускаете асинхронность и запускаете задачу в первый раз, вызывая handler.postDelayed (repeatingTask, 1000);

private Runnable repeatingTask = new Runnable() { 
    public void run() { 
     new MyAsyncTask().execute("my String"); 

         handler.postDelayed(this, 1000); 
    } 
}; 

Этот способ будет повторяться снова и снова. Надеюсь, это вам поможет.

0
public void recur() 
{ 
private Runnable repeat = new Runnable() { 
    public void run() { 
     new AsycnCaller().execute(); 

         handler.postDelayed(this, 10000); 
    } 
}; 

} 

вызов этой функции где вы хотите Start , а также называют это в postexecution из asyntask

+0

Я пробовал это, но это не помогло. – Lacoste1112

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