Я пытаюсь обработать ситуацию, когда пользователь теряет свое соединение с данными во время запроса Http в AsyncTask. В настоящее время AsyncTask никогда не закончит выполнение, если это произойдет, и приложение просто заглохнет. Я даже не могу проверить isCancelled(), потому что запрос Http просто бросается в очередь на один вызов функции, поэтому я не могу реализовать цикл или что-то еще.Отмена сетевого вызова в AsyncTask
Я использую следующие в потоке пользовательского интерфейса, но я не могу понять, как проверить, если задача была отменена внутри задачи:
task = new LoginTask();
task.execute(this, mUsername, mPassword);
Handler handler = new Handler();
handler.postDelayed(new Runnable()
{
@Override
public void run()
{
if (task != null && task.getStatus() == AsyncTask.Status.RUNNING)
{
task.cancel(true);
}
}
}, 5000);
ping местоположение, прежде чем пытаться открыть его с помощью задачи async? посмотрите, есть ли у вас какие-либо другие доступные интерфейсы, кроме 127.0.0.1? – Shark
Не знаете, как вы получаете свои данные, но большая часть поддержки сетевых/http-вызовов устанавливает тайм-аут. Например, HttpConnectionParams. –
@Shark Я проверяю активное соединение перед выполнением вызова, но вызов занимает около 5 секунд, и пользователь может потерять соединение за это время. – ashishduh