Unregister display listener

Display listener must be unregistered in ScanManager::cleanup()
to avoid getting display state change callbacks between
ScanManager::cleanup() and ScanManager object destruction.

BUG: 64253576
Test: Screen on and screen off during BLE scanning.
      Screen on and screen off with Bluetooth off.

Change-Id: I5b1f26696c44aaaca3720a200d85983afc8d2759
diff --git a/android/app/src/com/android/bluetooth/gatt/ScanManager.java b/android/app/src/com/android/bluetooth/gatt/ScanManager.java
index 7131714..65f4f6d 100644
--- a/android/app/src/com/android/bluetooth/gatt/ScanManager.java
+++ b/android/app/src/com/android/bluetooth/gatt/ScanManager.java
@@ -107,13 +107,15 @@
         mScanNative = new ScanNative();
         curUsedTrackableAdvertisements = 0;
         mDm = (DisplayManager) mService.getSystemService(Context.DISPLAY_SERVICE);
-        mDm.registerDisplayListener(mDisplayListener, null);
     }
 
     void start() {
         HandlerThread thread = new HandlerThread("BluetoothScanManager");
         thread.start();
         mHandler = new ClientHandler(thread.getLooper());
+        if (mDm != null) {
+            mDm.registerDisplayListener(mDisplayListener, null);
+        }
     }
 
     void cleanup() {
@@ -122,6 +124,10 @@
         mSuspendedScanClients.clear();
         mScanNative.cleanup();
 
+        if (mDm != null) {
+            mDm.unregisterDisplayListener(mDisplayListener);
+        }
+
         if (mHandler != null) {
             // Shut down the thread
             mHandler.removeCallbacksAndMessages(null);