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();
    }
}