Obtenga el momento del principio y el final de la descarga
-
27-10-2019 - |
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!
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.