title: Android- download file + status bar notification slowing down phone
body: <p>I currently have an <code>asynctask</code> which downloads a mp3 from a server. When the user starts to download it, a status bar notification is created. This displays the progress of the download in real time. My only concern is that the phone slows down almost too much. Is there any way to delay the progress displayed or a way to make my code faster? Thanks.</p>
  
  <p>Code below:</p>
  
  <pre><code>public class DownloadFile extends AsyncTask&lt;String, String, String&gt; {
      CharSequence contentText;
      Context context;
      CharSequence contentTitle;
      PendingIntent contentIntent;
      int HELLO_ID = 1;
      long time;
      int icon;
      CharSequence tickerText;
      File file;
  
      public void downloadNotification() {
          String ns = Context.NOTIFICATION_SERVICE;
          notificationManager = (NotificationManager) getSystemService(ns);
  
          icon = R.drawable.sdricontest;
          //the text that appears first on the status bar
          tickerText = "Downloading...";
          time = System.currentTimeMillis();
  
          notification = new Notification(icon, tickerText, time);
  
          context = getApplicationContext();
          //the bold font
          contentTitle = "Your download is in progress";
          //the text that needs to change
          contentText = "0% complete";
          Intent notificationIntent = new Intent(Intent.ACTION_VIEW);
          notificationIntent.setType("audio/*");
          contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
  
          notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
          notificationManager.notify(HELLO_ID, notification);
      }
  
      @Override
      protected void onPreExecute() {
          //execute the status bar notification
          downloadNotification();
          super.onPreExecute();
      }
  
      @Override
      protected String doInBackground(String... url) {
          int count;
          try {
              URL url2 = new URL(sdrUrl);
              HttpURLConnection connection = (HttpURLConnection) url2.openConnection();
              connection.setRequestMethod("GET");
              connection.setDoOutput(true);
              connection.connect();
  
              int lengthOfFile = connection.getContentLength();
  
              //make the stop drop rave folder
              File sdrFolder = new File(Environment.getExternalStorageDirectory() + "/StopDropRave");
              boolean success = false;
  
              if (!sdrFolder.exists()) {
                  success = sdrFolder.mkdir();
              }
              if (!success) {
                  String PATH = Environment.getExternalStorageDirectory()
                          + "/StopDropRave/";
                  file = new File(PATH);
                  file.mkdirs();
              } else {
                  String PATH = Environment.getExternalStorageDirectory()
                          + "/StopDropRave/";
                  file = new File(PATH);
                  file.mkdirs();
              }
  
              String[] path = url2.getPath().split("/");
              String mp3 = path[path.length - 1];
              String mp31 = mp3.replace("%20", " ");
              String sdrMp3 = mp31.replace("%28", "(");
              String sdrMp31 = sdrMp3.replace("%29", ")");
              String sdrMp32 = sdrMp31.replace("%27", "'");
  
              File outputFile = new File(file, sdrMp32);
              FileOutputStream fos = new FileOutputStream(outputFile);
  
              InputStream input = connection.getInputStream();
  
              byte[] data = new byte[1024];
              long total = 0;
              while ((count = input.read(data)) != -1) {
                  total += count;
                  publishProgress("" + (int) (total * 100 / lengthOfFile));
                  fos.write(data, 0, count);
              }
              fos.close();
              input.close();
          } catch (IllegalArgumentException e) {
              e.printStackTrace();
          } catch (IllegalStateException e) {
              e.printStackTrace();
          } catch (IOException e) {
              e.printStackTrace();
          }
          return null;
      }
  
      @Override
      public void onProgressUpdate(String... progress) {
          contentText = Integer.parseInt(progress[0]) + "% complete";
          notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
          notificationManager.notify(HELLO_ID, notification);
          super.onProgressUpdate(progress);
      }
  }
  </code></pre>