I'm having this problem:
I have a main Activity that request information for another class, that class gets that information from a web service, so I do that on a AsyncTask class. While the data is being loaded, the main Activity shows a ProgressDialog, I'm handling the back button so when it's pressed I can dismiss the Dialog, but now I want to cancel the AsyncTask. I created a static boolean var that is "true" when the back button is pressed, so from the doInBackground method from the AsyncTask I check if that var is true, if it's true I cancel the AsyncTask:
@Override protected Void doInBackground(Integer... args) {
try {
....
if ( MainActivity.isDialogCancelled ){
cancel(true);
}
....
} catch (Exception e) {
....
}
}
This seems to work fine, but I'm seeing a InterruptedException warning when I cancel the task this way, why is this happening and how I can avoid them? I'm doing something wrong?
These are the warnings:
01-24 18:40:50.582: W/AsyncTask(22877): java.lang.InterruptedException
01-24 18:40:50.582: W/AsyncTask(22877): at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1272)
01-24 18:40:50.582: W/AsyncTask(22877): at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:220)
01-24 18:40:50.582: W/AsyncTask(22877): at java.util.concurrent.FutureTask.get(FutureTask.java:83)
01-24 18:40:50.582: W/AsyncTask(22877): at android.os.AsyncTask$3.done(AsyncTask.java:196)
01-24 18:40:50.582: W/AsyncTask(22877): at java.util.concurrent.FutureTask$Sync.innerCancel(FutureTask.java:294)
01-24 18:40:50.582: W/AsyncTask(22877): at java.util.concurrent.FutureTask.cancel(FutureTask.java:76)
01-24 18:40:50.582: W/AsyncTask(22877): at android.os.AsyncTask.cancel(AsyncTask.java:325)
01-24 18:40:50.582: W/AsyncTask(22877): at android.os.AsyncTask$2.call(AsyncTask.java:185)
01-24 18:40:50.582: W/AsyncTask(22877): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
01-24 18:40:50.582: W/AsyncTask(22877): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
01-24 18:40:50.582: W/AsyncTask(22877): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
01-24 18:40:50.582: W/AsyncTask(22877): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
01-24 18:40:50.582: W/AsyncTask(22877): at java.lang.Thread.run(Thread.java:1019)
Thanks in advance