我正試圖處理在AsyncTask中的Http請求期間用戶丟失數據連接的情況。目前,AsyncTask將永遠不會執行,如果發生這種情況,應用程序就會停止。我甚至無法檢查isCancelled(),因爲Http請求只是在一個函數調用中停頓,所以我不能實現一個循環或任何東西。在AsyncTask中取消網絡調用
我使用的UI線程以下,但我無法弄清楚如何檢查任務已經從任務中取消:
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位置?看看你有沒有其他可用的接口,除了127.0.0.1? – Shark
不知道如何獲取數據,但大多數網絡/ http調用都支持設置超時。例如'HttpConnectionParams'。 –
@Shark我在進行呼叫之前測試了一個活動連接,但該呼叫需要大約5秒鐘才能執行,並且用戶可能會在此期間失去連接。 – ashishduh