Pregunta

Tengo que obtener el momento de descarga en mi aplicación de Android, por eso necesito determinar el momento del comienzo y el final de DowLoad para determinar el período de descarga de OD. Agregué estas línea al principio y al final de doInBackground:

Log.v("Download_INFO","i begin downloading at : "+" "+dt.getHours()+"h "+dt.getMinutes()+"min "
                        +dt.getSeconds()+"sec");

Log.v("Download_INFO","i complete downloading at : "+" "+dt.getHours()+"h "+dt.getMinutes()
                        +"min "+dt.getSeconds()+"sec");

Pero la sorpresa es que tuve el tiempo. No puedo entender la razón

este es mi doInBackground método :

protected String doInBackground(String... aurl) {
        int count;

        try {
            File vSDCard = null;
            if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
                vSDCard = Environment.getExternalStorageDirectory();
                File vFile = new File(vSDCard.getParent() + "/" + vSDCard.getName() + "/"
                        + "downloadTest.jpg");
                URL url = new URL(aurl[0]);
                URLConnection conexion = url.openConnection();
                conexion.connect();
                int lenghtOfFile = conexion.getContentLength();
                Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile);
                InputStream input = new BufferedInputStream(url.openStream());
                OutputStream output = new FileOutputStream(vFile);
                byte data[] = new byte[1024];
                long total = 0;
                while ((count = input.read(data)) != -1) {
                    total += count;
                    publishProgress("" + (int) ((total * 100) / lenghtOfFile));
                    output.write(data, 0, count);
                }

                Log.v("Download_INFO","i complete downloading at : "+" "+dt.getHours()+"h "+dt.getMinutes()
                        +"min "+dt.getSeconds()+"sec");
                output.flush();
                output.close();
                input.close();
                System.out.println(currentDateTimeString);
            }

        } catch (Exception e) {
            Log.d("ImageManager", "Error: " + e);
        }

        return null;
    }

¿Cuál es el problema por favor!

¿Fue útil?

Solución

Parece que estás usando el mismo objeto de fecha para ambas declaraciones de registro. Agregue esto antes de su estado de cuenta de registro "Descargar completo":

dt = new Date();

Por cierto, todos esos métodos (GetSeconds, Gethours, etc.) de fecha están deprimidos. Puede obtener el tiempo simplemente haciendo un sistema. CurrentTimemillis () al comienzo de la descarga y nuevamente al final y restando. Esta es la duración total en milisegundos que puede convertir en horas/min/segundos si lo desea.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top