title: Can't cancel Async task in android
body: <p>I need to cancel my asyncthread . In my application I am doing some heavy calculations, and I want to give user ability to cancel calculations(and then retry). I read on forums, that you can't just stop task from what is it doing, and that you need to check if task isCancelled=true inside your DoinBackground code. But that doesn't work for me. </p>
  
  <p>Task itself is working great and it outputs correct data if I leaved it to end on itself.</p>
  
  <p>In my App first I call function naredi_pdf_start(view), then when the task is running, if I call close_pdf1(view), it gives me an error.(I am changing views and app can't find my pdf_text1 Textview when calling publishProgress- null pointer exception). I really dont know how to use task.cancel(true) method (in my case: start_pdf.cancel(true))).</p>
  
  <p>Here is my code:</p>
  
  <pre><code>String progress_pdf;
  naredi_pdf start_pdf;
  
  public void naredi_pdf_start(View view) {
      start_pdf=new naredi_pdf();
      start_pdf.execute();
  }
  
  public void close_pdf1(View view) {
  
      if(start_pdf!=null) {
          Log.v("not null","not null");
  
          start_pdf.cancel(true);
          setContentView(R.layout.other_view); //This is where 
                                               //I don't have TextView pdf_text1
      }
  }
  
  private class naredi_pdf extends AsyncTask&lt;Void, String, Void&gt; {
  
      protected Void doInBackground( Void... ignoredParams ) {
          progress_pdf="Calculating Statistical Data";
  
          //A LOT OF CODING
  
          for(int i = 0; i &lt; 1; i++) {
              if(isCancelled()) {
                  break;
              }
              else {
                  publishProgress("Calculating team statistics");  
              }
          }
  
          //MORE OF CODING              
  
          for (int i = 0; i &lt; 1; i++) {
              if (isCancelled()) {
                  break;
              }
              else {
                  publishProgress("Calculating player's BIO");  
              }
          }
  
          //MORE OF CODING       
  
          for (int i = 0; i &lt; 1; i++) {
              if (isCancelled()) {
                  break;
              }
          else {
                  publishProgress("Calculating player's individual performance");
              }
          }
  
          return null; 
      }
  
      protected void onPostExecute( Void array ) {
          //saving to database
      }
  
      protected void onProgressUpdate(String... values) {
          progress_pdf=values[0]+"\n"+progress_pdf;
  
          if (isCancelled())  {
  
          }
          else {
              TextView pdf_text1 = (TextView) findViewById (R.id.pdf_text1);
              pdf_text1.setText(progress_pdf);
              // dialog(view);
          }
      }
  }
  </code></pre>