public class MyActivity extends AppCompatActivity { private DummyAsyncTask dummyAsyncTask = new DummyAsyncTask(new DummyAsyncTask.StatusCallback() { @Override public void progressStarted() { } @Override public void onProgress(int progress) { } @Override public void progressStopped() { } }); @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); dummyAsyncTask.execute(); } @Override protected void onDestroy() { dummyAsyncTask.cancel(true); super.onDestroy(); } } public class DummyAsyncTask extends AsyncTask<Void, Integer, Void> { private StatusCallback statusCallback; public DummyAsyncTask(StatusCallback statusCallback) { this.statusCallback = statusCallback; } @Override protected void onPreExecute() { super.onPreExecute(); statusCallback.progressStarted(); } @Override protected Void doInBackground(Void... voids) { if (isCancelled()) { // Return null, if this AsyncTask was cancelled. return null; } // Do something. publishProgress(someProgressInt); return null; } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); statusCallback.onProgress(values[0]); } @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); statusCallback.progressStopped(); } public interface StatusCallback { void progressStarted(); void onProgress(int progress); void progressStopped(); } }