У меня есть метод onCreate, который запускает код ниже. В двух словах код извлекает данные с сервера и показывает его на экране для программы обмена сообщениями. Это происходит только один раз, но я хотел бы, чтобы он запускал AsyncTask каждые 3 секунды (чтобы попытаться смоделировать чат). Я почти уверен, что это не способ иметь чат-систему, но мне просто нужно что-то, что работает сейчас (как доказательство концепции), и я сосредоточусь на правильном способе его реализации позже.Как снова и снова запускать AsyncTask?
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.chat_box);// sd
final Functions function = new Functions();
final SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
whatroom = prefs.getString("chat", "null");
new AsyncTask<String, Void, String>() {
@Override
protected String doInBackground(String... args) {
return function.getInbox(args[0]);
}
@Override
protected void onPostExecute(String result) {
TextView inbox = (TextView) findViewById(R.id.inbox);
ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar1);
progressBar.setVisibility(View.GONE);
inbox.setText(result);
}
}.execute(whatroom);
}
Я пробовал ставить простую инструкцию while вокруг асинтезы, но она просто заставляет закрывать.
В чем вопрос? –
Обычно мы не используем AsyncTask для периодической задачи, проверьте мой ответ [здесь] (http://stackoverflow.com/questions/8098806/where-do-i-create-and-use-scheduledthreadpoolexecutor-timertask-or- обработчик/8102488 # 8102488), чтобы узнать, помогает ли это. – yorkw
Йорк, ваш ответ в этом вопросе был совершенным. Он работал для меня и делал все, что мне нужно, чтобы это делать. – EGHDK