| Index: base/android/java/src/org/chromium/base/ThreadUtils.java
|
| diff --git a/base/android/java/src/org/chromium/base/ThreadUtils.java b/base/android/java/src/org/chromium/base/ThreadUtils.java
|
| index ca31c3df0abc7eac5e8f108a58f8826282bc1093..b827a0b6c0b49914cebdcfe8f357fec32fc2b915 100644
|
| --- a/base/android/java/src/org/chromium/base/ThreadUtils.java
|
| +++ b/base/android/java/src/org/chromium/base/ThreadUtils.java
|
| @@ -103,7 +103,11 @@ public class ThreadUtils {
|
| * @param r The Runnable to run
|
| */
|
| public static void runOnUiThread(Runnable r) {
|
| - runOnUiThread(new FutureTask<Void>(r, null));
|
| + if (runningOnUiThread()) {
|
| + r.run();
|
| + } else {
|
| + LazyHolder.sUiThreadHandler.post(r);
|
| + }
|
| }
|
|
|
| /**
|
| @@ -114,7 +118,7 @@ public class ThreadUtils {
|
| * @return The queried task (to aid inline construction)
|
| */
|
| public static <T> FutureTask<T> postOnUiThread(FutureTask<T> task) {
|
| - new Handler(Looper.getMainLooper()).post(task);
|
| + LazyHolder.sUiThreadHandler.post(task);
|
| return task;
|
| }
|
|
|
| @@ -131,4 +135,8 @@ public class ThreadUtils {
|
| public static boolean runningOnUiThread() {
|
| return Looper.getMainLooper() == Looper.myLooper();
|
| }
|
| +
|
| + private static class LazyHolder {
|
| + private static Handler sUiThreadHandler = new Handler(Looper.getMainLooper());
|
| + }
|
| }
|
|
|