2011-12-03 80 views
1

我必須在我的android應用程序中獲得下載時間,這就是爲什麼我需要確定下載的開始和結束時間以確定期間下載的時間。 我加在一開始,這些線路和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"); 

但出人意料的是,我有一段時間了。我無法理解的原因

這是我doInBackground方法:

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; 
    } 

有什麼問題,請!

回答

0

它看起來像是你爲兩個日誌語句使用相同的日期對象。你的「下載完成」日誌語句前加上這一句:

dt = new Date(); 

順便說一句,所有這些方法日期(getSeconds,調用getHours等)的depricated。您可以簡單地通過在下載開始時執行System.currentTimeMillis()並在結尾處再次減去來獲得時間。這是以毫秒爲單位的總持續時間,如果需要,可以將其轉換爲小時/分鐘/秒。

+0

偉大的想法。這只是「System.currentTimeMillis」 – Linconnue55

相關問題