summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndre Eisenbach <eisenbach@google.com>2016-09-24 00:22:41 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-09-24 00:22:41 +0000
commit35ba33f70c37ed4d9220ebe1caf716b04edd51d7 (patch)
treeca2a8a3fe205e3777bc6a39d9b395d033be73ebd
parente990a9b90120c3e41f3ff254e62eecb45d753d30 (diff)
parente8d2b5c0f591311c90e428d88b94cd89b88ed342 (diff)
downloadandroid_packages_apps_Bluetooth-35ba33f70c37ed4d9220ebe1caf716b04edd51d7.tar.gz
android_packages_apps_Bluetooth-35ba33f70c37ed4d9220ebe1caf716b04edd51d7.tar.bz2
android_packages_apps_Bluetooth-35ba33f70c37ed4d9220ebe1caf716b04edd51d7.zip
Limit number of stored device properties
am: e8d2b5c0f5 Change-Id: I02e2934b8afc9018ca0036e369a4569f2528f8a9
-rw-r--r--src/com/android/bluetooth/btservice/RemoteDevices.java20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/com/android/bluetooth/btservice/RemoteDevices.java b/src/com/android/bluetooth/btservice/RemoteDevices.java
index 9eaf7e5d2..904803664 100644
--- a/src/com/android/bluetooth/btservice/RemoteDevices.java
+++ b/src/com/android/bluetooth/btservice/RemoteDevices.java
@@ -30,12 +30,15 @@ import com.android.bluetooth.Utils;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.ArrayList;
import java.util.HashMap;
-
+import java.util.LinkedList;
+import java.util.Queue;
final class RemoteDevices {
private static final boolean DBG = false;
private static final String TAG = "BluetoothRemoteDevices";
+ // Maximum number of device properties to remember
+ private static final int MAX_DEVICE_QUEUE_SIZE = 200;
private static BluetoothAdapter mAdapter;
private static AdapterService mAdapterService;
@@ -46,12 +49,14 @@ final class RemoteDevices {
private static final int MESSAGE_UUID_INTENT = 1;
private HashMap<String, DeviceProperties> mDevices;
+ private Queue<String> mDeviceQueue;
RemoteDevices(AdapterService service) {
mAdapter = BluetoothAdapter.getDefaultAdapter();
mAdapterService = service;
mSdpTracker = new ArrayList<BluetoothDevice>();
mDevices = new HashMap<String, DeviceProperties>();
+ mDeviceQueue = new LinkedList<String>();
}
@@ -61,6 +66,9 @@ final class RemoteDevices {
if (mDevices != null)
mDevices.clear();
+
+ if (mDeviceQueue != null)
+ mDeviceQueue.clear();
}
@Override
@@ -86,7 +94,15 @@ final class RemoteDevices {
DeviceProperties prop = new DeviceProperties();
prop.mDevice = mAdapter.getRemoteDevice(Utils.getAddressStringFromByte(address));
prop.mAddress = address;
- mDevices.put(Utils.getAddressStringFromByte(address), prop);
+ String key = Utils.getAddressStringFromByte(address);
+ DeviceProperties pv = mDevices.put(key, prop);
+ if (pv == null) {
+ mDeviceQueue.offer(key);
+ if (mDeviceQueue.size() > MAX_DEVICE_QUEUE_SIZE) {
+ String deleteKey = mDeviceQueue.poll();
+ mDevices.remove(deleteKey);
+ }
+ }
return prop;
}
}