Fix AsyncTask to handle exceptions in doInBackground

When cancelling, the exception will be eaten by FutureTask, but
onCancelled would end up never being called due to the exception
causing the code to skip calling postResult.

b/30304893

Change-Id: I47d859d9ef77245889816b2b6e10bb380bc4979b
This commit is contained in:
Tony Mantler
2016-08-05 14:08:06 -07:00
parent ba8f3d03ac
commit 78a8e9d293

View File

@@ -298,12 +298,16 @@ public abstract class AsyncTask<Params, Progress, Result> {
mWorker = new WorkerRunnable<Params, Result>() {
public Result call() throws Exception {
mTaskInvoked.set(true);
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
//noinspection unchecked
Result result = doInBackground(mParams);
Binder.flushPendingCommands();
return postResult(result);
Result result = null;
try {
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
//noinspection unchecked
result = doInBackground(mParams);
Binder.flushPendingCommands();
} finally {
postResult(result);
}
return result;
}
};