Merge "Forces AsyncTask to use the main looper Bug #5333924"

This commit is contained in:
Romain Guy
2011-09-16 16:50:22 -07:00
committed by Android (Google) Code Review

View File

@@ -237,6 +237,7 @@ public abstract class AsyncTask<Params, Progress, Result> {
/** @hide Used to force static handler to be created. */
public static void init() {
// TODO: This doesn't do anything, we should get rid of it
sHandler.getLooper();
}
@@ -254,6 +255,7 @@ public abstract class AsyncTask<Params, Progress, Result> {
mTaskInvoked.set(true);
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
//noinspection unchecked
return postResult(doInBackground(mParams));
}
};
@@ -288,7 +290,7 @@ public abstract class AsyncTask<Params, Progress, Result> {
}
private Result postResult(Result result) {
Message message = sHandler.obtainMessage(MESSAGE_POST_RESULT,
@SuppressWarnings({"unchecked"}) Message message = sHandler.obtainMessage(MESSAGE_POST_RESULT,
new AsyncTaskResult<Result>(this, result));
message.sendToTarget();
return result;
@@ -598,6 +600,10 @@ public abstract class AsyncTask<Params, Progress, Result> {
}
private static class InternalHandler extends Handler {
InternalHandler() {
super(Looper.getMainLooper());
}
@SuppressWarnings({"unchecked", "RawUseOfParameterizedType"})
@Override
public void handleMessage(Message msg) {