Android AsyncTask Как установить таймер

#java #android #multithreading #android-asynctask

#java #Android #многопоточность #android-асинхронная задача

Вопрос:

я новичок в асинхронной задаче Android

у меня действительно есть один простой вопрос.. пожалуйста, скажите мне, где искать, если этот вопрос задавался раньше

я использую AsyncTask

мой doInBackground в этой asynctask используется для POST-запроса на мой собственный сервер

но иногда, когда мой сервер не работает, возможно, из-за электричества или другой проблемы,

эта асинхронная задача будет загружаться вечно

и пока asynctask все еще выполняется, я открываю свой компьютер, и сервер снова запущен, но асинхронная задача все еще выполняется и загружается вечно, пока я не закрою программу и не запущу обратно

я не хочу, чтобы мой пользователь испытывал это

я думаю, то, что я хочу, это

создание асинхронной задачи для запуска doInBackground примерно на 20 секунд, и через 20 секунд, если результата по-прежнему нет, я что-нибудь сделаю

как мне это сделать?

должен ли я создать еще один поток на эти 20 секунд? или есть какой-нибудь таймер, который можно установить в asynctask..

спасибо ранее..

Ответ №1:

Вы должны добавить время ожидания для сетевой операции. Таким образом, при превышении этого времени ожидания будет выдано исключение.

Например, при использовании DefaultHttpClient это было бы что-то вроде:

 HttpParams httpParameters = client.getParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, CONNECTION_TIMEOUT);
HttpConnectionParams.setSoTimeout(httpParameters, SOCKET_TIMEOUT);
  

Если это HttpUrlConnection вместо этого используйте:

 connection.setConnectTimeout(CONNECTION_TIMEOUT);
connection.setReadTimeout(SOCKET_TIMEOUT);
  

где CONNECTION_TIMEOUT и SOCKET_TIMEOUT указаны в миллисекундах.