summaryrefslogtreecommitdiffstats
path: root/wifi
diff options
context:
space:
mode:
authorIrfan Sheriff <isheriff@google.com>2012-11-07 16:46:31 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2012-11-07 16:46:31 -0800
commit5c8e5585e254f9d24320ece18e850140b29236ac (patch)
treee8968eb0a3629ad5d0b87f56a9a6000f0008e0f6 /wifi
parent61026ab15d03c309f2741f1eff708611e1407fd6 (diff)
parent1f6cf5fade6021c1ce788541ec4a60ee36d20651 (diff)
downloadframeworks_base-5c8e5585e254f9d24320ece18e850140b29236ac.zip
frameworks_base-5c8e5585e254f9d24320ece18e850140b29236ac.tar.gz
frameworks_base-5c8e5585e254f9d24320ece18e850140b29236ac.tar.bz2
am 1f6cf5fa: Merge "Re-use existing thread" into jb-mr1.1-dev
* commit '1f6cf5fade6021c1ce788541ec4a60ee36d20651': Re-use existing thread
Diffstat (limited to 'wifi')
-rw-r--r--wifi/java/android/net/wifi/WifiManager.java21
1 files changed, 16 insertions, 5 deletions
diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java
index b871cdc..0e29882 100644
--- a/wifi/java/android/net/wifi/WifiManager.java
+++ b/wifi/java/android/net/wifi/WifiManager.java
@@ -508,6 +508,10 @@ public class WifiManager {
private Messenger mWifiServiceMessenger;
private final CountDownLatch mConnected = new CountDownLatch(1);
+ private static Object sThreadRefLock = new Object();
+ private static int sThreadRefCount;
+ private static HandlerThread sHandlerThread;
+
/**
* Create a new WifiManager instance.
* Applications will almost always want to use
@@ -1365,9 +1369,14 @@ public class WifiManager {
return;
}
- HandlerThread t = new HandlerThread("WifiManager");
- t.start();
- mHandler = new ServiceHandler(t.getLooper());
+ synchronized (sThreadRefLock) {
+ if (++sThreadRefCount == 1) {
+ sHandlerThread = new HandlerThread("WifiManager");
+ sHandlerThread.start();
+ }
+ }
+
+ mHandler = new ServiceHandler(sHandlerThread.getLooper());
mAsyncChannel.connect(mContext, mHandler, mWifiServiceMessenger);
try {
mConnected.await();
@@ -1983,8 +1992,10 @@ public class WifiManager {
protected void finalize() throws Throwable {
try {
- if (mHandler != null && mHandler.getLooper() != null) {
- mHandler.getLooper().quit();
+ synchronized (sThreadRefLock) {
+ if (--sThreadRefCount == 0 && sHandlerThread != null) {
+ sHandlerThread.getLooper().quit();
+ }
}
} finally {
super.finalize();