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
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index 54ff69f..c28a373 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -105,7 +105,7 @@
private int mNumDnsEntries;
private boolean mTestMode;
- private static volatile ConnectivityService sServiceInstance;
+ private static ConnectivityService sServiceInstance;
private Handler mHandler;
@@ -176,10 +176,11 @@
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.