Asynctask Onpostexecute Call From Outside The Asynctask
I want to use the same AsyncTask in different places on my App and I want a different onPostExecute for each one. It's possible to call them from onCreate method instead of from As
Solution 1:
Just create an AsyncTask
with no onPostExecute
method overridden
publicclassYourTaskextendsAsyncTask<Whatever, Whatever, Whatever> {
@Overrideprotected Whatever doInBackground(Whatever... whatever) {
// whateverreturn whatever;
}
}
And then when you want different implementations of onPostExecute
, create anonymous task or descendant class and use it
task = newYourTask() {
@OverrideprotectedvoidonPostExcecute(Whatever result) {
//whatever
}
};
task.execute();
Or better
publicclassYourTaskAnotherextendsYourTask {
// just override onPostExecute here@OverrideprotectedvoidonPostExcecute(Whatever result) {
//whatever
}
}
task = newYourTaskAnother();
task.execute();
Solution 2:
What you can do is to add a switch case in the onPostExecute() method depending on all possible scenarios. Then inside the AyncTask add a constructor using which you could pass the type.
DownloadTaskextendsAsyncTask ...
{
int postExecuteType;
publicDownloadTask(int type) {
this.postExecuteType = type;
}
...
protectedvoidonPostExecuted()
{
switch(type) {
case1:
break;
}
}
}
Now just call newDownloadTask(1).execute();
Post a Comment for "Asynctask Onpostexecute Call From Outside The Asynctask"