0

I am creating multiple AsyncTask instances. I would like to create an array of AsyncTask to use these references to cancel the task later on but i am not able to figure out how to create an Array.

private AsyncTask<Integer, Void, Bitmap> mLoadTask;

private void loadTask(final Integer sInt){
mLoadTask = new AsyncTask<Integer, Void, Bitmap>() {                

    @Override 
    protected void onPostExecute(Bitmap result) {

    ...             

    }

    @Override
    protected Bitmap doInBackground(Integer... params) {        

    ...

    }

};

mLoadTask.execute(sInt);
}

I would like for mLoadTask to be called as an array element i.e one for each new task. Something like this

mLoadTask[sInt].execute(sInt)

Please suggest how to modify my code to achieve something like this or if there is another approach to this which would better suit.

1 Answer 1

4

Do just that, create an Array of tasks. Something that might help you in understanding what you are doing is to create a class that extends AsyncTask, which you could create an explicit Array of. Do something like this.

private MyAsyncTask[] mLoadTasks;

public void onCreate...{
    super.onCreate...;

    ...

    mLoadTasks = new MyAsyncTask[size_of_array];
}

private void loadTask(int sInt){
    mLoadTasks[sInt].execute(sInt);
}

public class MyAsyncTask extends AsyncTask<Integer, Void, Bitmap>{                

    @Override
    protected Bitmap doInBackground(Integer... params) {        
        ...
    }

    @Override 
    protected void onPostExecute(Bitmap result) {
        ...             
    }

}

If you don't know the size of your array at compile time you would need to create a List (since Lists can dynamically shrink/expand as needed).

This may not be the only way to do things, but it is readable and easy enough :)

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.