2013-11-23 70 views
0

正在寫一個downloadManager,我需要一個提示。在那裏,我可以創造一個事件,當我想要的時候就會發生火災。但我似乎無法找到如何在java中做到這一點。我想要做的是我想爲我的類創建一個事件,然後在類的成員方法之一中激發它。現在當這個Class被調用並且看到下載完成時(即,例如某個變量已經達到100),它會觸發表示該情況的事件。我怎樣才能在java中創建? 如何創建一個事件下載完成時觸發

public class DownloadManager 
    { 
     static Queue<AvailableGame> downloadQueue; 
     static Integer currenProgress; 
     static String currentDownload; 
     static Boolean isRunning; 


     /** 
     * Start download 
     */ 
     public void startDownloading() 
     { 

      AsyncTask task = new AsyncTask() 
      { 
       @Override 
       protected Object doInBackground(Object[] objects) 
       { 
        downloadNextFile(); 
        return null; 

     private static String downloadFile(String downloadUrl) 
     { 
      String toDownload = downloadUrl; 
      String fileName = getFileNameFromUrl(toDownload); 

      // take CPU lock to prevent CPU from going off if the user 
      // presses the power button during download 
      PowerManager pm = (PowerManager) 
      MainActivity.getContext().getSystemService(Context.POWER_SERVICE); 
      PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, 
      "DownloadManager"); 
      wl.acquire(); 

      try 
      { 
       InputStream input = null; 
       OutputStream output = null; 
       HttpURLConnection connection = null; 
       try 
       { 
        URL url = new URL(toDownload); 
        connection = (HttpURLConnection) url.openConnection(); 
        connection.connect(); 

        // expect HTTP 200 OK, so we don't mistakenly save error report 
        // instead of the file 
        if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) 
        { 
         return "Server returned HTTP " + connection.getResponseCode() + " " 
         + connection.getResponseMessage(); 
        }  

        int fileLength = connection.getContentLength(); 

        // download the file 
        input = connection.getInputStream(); 
        output = new FileOutputStream("/sdcard/" + fileName); 

        byte data[] = new byte[4096]; 
        long total = 0; 
        int count; 
        while ((count = input.read(data)) != -1) 
        { 
         total += count; 
         // publishing the progress.... 
         if (fileLength > 0) 
         { 
          currenProgress = ((int) (total * 100/fileLength)); 
          currentDownload = "Downloading " + fileName; 
         } 
         output.write(data, 0, count); 
        } 
       } 
       catch (Exception e) 
       { 
        return e.toString(); 
       } 
       finally 
       { 
        try 
        { 
         if (output != null) 
         { 
          output.close(); 
         } 
         if (input != null) 
         { 
          input.close(); 
         } 
        } 
        catch (IOException ignored) 
        { 
        } 

        if (connection != null) 
        { 
         connection.disconnect(); 
        } 
       } 
      } 
      finally 
      { 
       wl.release(); 
      } 
      return null; 
     } 


    } 

我怎麼能保存的信息時,我的下載完成,第二probleem是如何將

回答

相關問題