启动时,我的 android 应用程序使用异步任务从远程服务器加载一些图像。有时,当连接太弱时,加载需要很长时间并且不是很好。我如何为这个任务添加超时,这样如果活动在 10 秒后无法加载图像,用户将收到一条错误消息
问问题
229 次
3 回答
0
使用AsyncTask
,然后显示进度条 10 秒。如果超过 10 秒,则显示日志消息。
于 2013-06-10T10:23:42.953 回答
0
你可以试试这样的
private static final int MAX_ATTEMPTS = 5;
static class Task extends AsyncTask<String, Integer, Integer> {
protected Integer doInBackground(String... vals) {
try {
long backoff = BACKOFF_MILLI_SECONDS + random.nextInt(1000);
for (int i = 1; i <= MAX_ATTEMPTS; i++) {
Log.d(TAG, "Attempt #" + i + " to server connection");
try {
//DO STUFF
} catch (IOException e) {
if (i == MAX_ATTEMPTS) {
break;
}
try {
Log.d(TAG, "Sleeping for " + backoff + " ms before retry");
Thread.sleep(backoff);
} catch (InterruptedException e1) {
Log.d(TAG, "Thread interrupted: abort remaining retries!");
Thread.currentThread().interrupt();
return 400;
}
// increase backoff exponentially
backoff *= 2;
}
}
} catch (Exception e) {
Log.e(TAG, "ERROR", e);
}
return 400;
}
protected void onPostExecute(Integer success) {
}
}
但我建议你看一下谷歌的新网络库Volley 。这将为您提供最好的服务。我在我的一种上传方法中使用了上面的代码
于 2013-06-10T10:24:34.293 回答
0
如果您使用 .net Web 服务从服务器获取数据,请使用以下命令:
HttpTransportSE aht1 = new HttpTransportSE(URL, 60000);
其中,URL 是您的网络服务连接 url。在这里,它等待 1 分钟以获得响应。之后它会抛出超时错误。
于 2013-06-10T10:32:59.690 回答