Note that there are some explanatory texts on larger screens.

plurals
  1. POAsync task wont stop
    primarykey
    data
    text
    <pre><code>package com.example.asynctask; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.View; import android.widget.ProgressBar; public class MainActivity extends Activity { ProgressBar progressbar; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); progressbar = (ProgressBar) findViewById(R.id.progressBar); } class ProgressTask extends AsyncTask&lt;Integer, Integer, Void&gt; { private boolean flag = true; @Override protected void onPreExecute() { progressbar.setMax(100); } @Override protected void onCancelled() { //progressbar.setMax(0); flag = false; Log.v("onCancelled:flag", String.valueOf(flag)); } @Override protected Void doInBackground(Integer... params) { // TODO Auto-generated method stub int start = params[0]; for (int i = start; i &lt;= 100; i=i+10) { if (!flag) { break; } else { publishProgress(i); try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block Log.e("ThreadError", e.toString()); } } } return null; } @Override protected void onProgressUpdate(Integer... values) { progressbar.setProgress(values[0]); } @Override protected void onPostExecute(Void result) { Log.v("Progress", "Finish"); } } public void onClick(View v) { ProgressTask task = new ProgressTask(); switch (v.getId()) { case R.id.start: task.execute(10); break; case R.id.stop: task.cancel(true); break; } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } } </code></pre> <p>Here is a symple AsyncTask app which starts to update the progress bar when you hit Start. But when you will hit stop, it wont stop. Thing is when you call <strong><em>task.cancel(true)</em></strong>, <strong><em>onCancelled()</em></strong> methods does gets invoked and changes the value of flag to <strong>false</strong> but in <strong><em>onCancelled()</em></strong> value of flag remains true. I have also tried <strong><em>isCancelled()</em></strong> in place of flag varaible with no success. For a moment my problem is similar to <a href="https://stackoverflow.com/questions/4959628/android-asynctask-wont-stop-when-cancelled-why">Ollie C</a>, but no exceptions are thrown in my case. </p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload