Android - 如果AsyncTask耗时太长,则显示进度条

时间:2016-09-22 20:39:31

标签: android timer android-asynctask

可能的相似性:Check if AsyncTask is taking too long

大家好,我现在正在构建一个Android应用程序,以帮助我的母亲管理账单。为此,我使用AsyncTask从我的数据库中获取一些数据。假设网络连接良好,数据不是很大,也不需要进度条,而且我不想让网络状况良好,因为它的速度非常快然后显示进度条,然后立即消失,这看起来像一个故障。

然而,考虑到网络并不总是好的,获取数据可能需要更多时间,并且用户不会知道他的输入是否被考虑,因为它是后台线程并且没有有关进度的UI信息。

这就是为什么我只想在AsyncTask花费太长时间时显示进度条,尽管我不知道也不知道实现这样的功能。

AsyncTask:

@Override
    protected String doInBackground(String... values)
    {
        // connexion avec le serveur
        HttpURLConnection connexion = null;
        URL url = null;
        try {
            // ouvrir la connexion HTTP
            url = new URL(BASE_URL + scriptPath);
            connexion = (HttpURLConnection) url.openConnection();

            // configurer la connexion en mode GET
            connexion.setReadTimeout(10000);
            connexion.setConnectTimeout(15000);
            connexion.setRequestMethod("GET");
            connexion.setDoInput(true);

            // récupérer la réponse du serveur
            InputStream reponse = connexion.getInputStream();

            // récupérer les données et en faire une chaîne
            BufferedReader reader = new BufferedReader(new InputStreamReader(reponse, "utf-8"));
            String jsondata = "";
            String fromReader = "";


            while ((fromReader = reader.readLine()) != null) {
                // Add line to jsonString
                jsondata += (fromReader + "\n");
            }

            pd.dismiss(); //ProgressDialog started from the main thread

            return jsondata;

        } catch (Exception e) {

                Log.e("ERROR", e.toString());

            return null;

        } finally {
            // déconnexion obligatoire pour ne pas bloquer le serveur
            if (connexion != null) connexion.disconnect();
        }
    }

提前谢谢大家。

0 个答案:

没有答案