diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index 6f23805c0e..98394d07df 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -105,7 +105,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { private int mNumDnsEntries; private boolean mTestMode; - private static ConnectivityService sServiceInstance; + private static volatile ConnectivityService sServiceInstance; private Handler mHandler; @@ -174,11 +174,10 @@ public class ConnectivityService extends IConnectivityManager.Stub { Looper.loop(); } - public static ConnectivityService getServiceInstance(Context context) { - ConnectivityThread thread = new ConnectivityThread(context); - thread.start(); - - synchronized (thread) { + public static synchronized ConnectivityService getServiceInstance(Context context) { + if (sServiceInstance == null) { + ConnectivityThread thread = new ConnectivityThread(context); + thread.start(); while (sServiceInstance == null) { try { // Wait until sServiceInstance has been initialized.