From 56023ad2c6b9d9565adcbec854d16bccbe947fa4 Mon Sep 17 00:00:00 2001 From: Joe Onorato Date: Wed, 1 Sep 2010 21:18:22 -0700 Subject: [PATCH] Revert "Changed ConnectivityService#getServiceInstance so its a singleton." This reverts commit 7323ea10cd029e0f3bcbcc1679e9b7314aa04328 which causes this exception: E/SystemServer( 2653): Failure starting Connectivity Service E/SystemServer( 2653): java.lang.IllegalMonitorStateException: object not locked by thread before wait() E/SystemServer( 2653): at java.lang.Object.wait(Native Method) E/SystemServer( 2653): at java.lang.Object.wait(Object.java:358) E/SystemServer( 2653): at com.android.server.ConnectivityService$ConnectivityThread.getServiceInstance(ConnectivityService.java:186) E/SystemServer( 2653): at com.android.server.ConnectivityService.getInstance(ConnectivityService.java:200) E/SystemServer( 2653): at com.android.server.ServerThread.run(SystemServer.java:262) Change-Id: Idd139e426e61a1913b0bf343e2f0a0b1990ba8bb --- .../java/com/android/server/ConnectivityService.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index 54ff69f60d..c28a3733ed 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 volatile ConnectivityService sServiceInstance; + private static ConnectivityService sServiceInstance; private Handler mHandler; @@ -176,10 +176,11 @@ public class ConnectivityService extends IConnectivityManager.Stub { Looper.loop(); } - public static synchronized ConnectivityService getServiceInstance(Context context) { - if (sServiceInstance == null) { - ConnectivityThread thread = new ConnectivityThread(context); - thread.start(); + public static ConnectivityService getServiceInstance(Context context) { + ConnectivityThread thread = new ConnectivityThread(context); + thread.start(); + + synchronized (thread) { while (sServiceInstance == null) { try { // Wait until sServiceInstance has been initialized.