0

启动时,我的 android 应用程序使用异步任务从远程服务器加载一些图像。有时,当连接太弱时,加载需要很长时间并且不是很好。我如何为这个任务添加超时,这样如果活动在 10 秒后无法加载图像,用户将收到一条错误消息

4

3 回答 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 回答