Dont call close in in BluetoothA2dp finalize
The close in finalize() is pointless, as finalize() will only be called if there are no references to BluetoothA2dp. Until close() is called, BluetoothManagerService will have a reference to BluetoothA2dp, preventing garbage collection and finalize() to be called. This means finalize() is not serving its purpose of cleaning up in cases close() is not called, as finalize() is only called if close() has already been called. Actually calling close in finalize here means unregistering the already unregistered mBluetoothStateChangeCallback which can lead to crashes when pairing/unpairing BTH. A typical crash would look like: *** FATAL EXCEPTION IN SYSTEM PROCESS: BluetoothManager java.lang.NullPointerException at android.os.RemoteCallbackList.unregister(RemoteCallbackList.java:143) at com.android.server.BluetoothManagerService$BluetoothHandler.handleMessage(BluetoothManagerService.java:780) at android.os.Handler.dispatchMessage(Handler.java:99) Change-Id: Ib65962917ecbacf7900d7fe540057e6915f0532d
Loading
Please register or sign in to comment