BluetoothAdapter导致活动泄漏

时间:2014-05-14 17:57:45

标签: android android-bluetooth

我有一个监听蓝牙耳机的活动,因为它播放音频。在activity的onCreate()方法中,我通过适配器注册了监听器:

mBluetoothAdapter = BluetoothAdapter..getDefaultAdapter();
if (mBluetoothAdapter != null) 
    mBluetoothAdapter.getProfileProxy(getApplicationContext(), mBluetoothProfileServiceListener,BluetoothProfile.HEADSET);

然后在onDestroy()中,我关闭了代理:

mBluetoothAdapter.closeProfileProxy(BluetoothProfile.HEADSET, mBluetoothHeadset);

如果我在没有连接蓝牙耳机的情况下多次打开和关闭活动,则所有活动都会保留在内存中。使用内存转储,我可以看到所有这些都被来自android.bluetooth.BluetoothHeadset中的mServiceListener的单个引用持有。

我无法在开发人员文档中找到有关如何删除侦听器以释放活动的任何内容。有没有办法将活动作为监听器删除,以便释放内存?

1 个答案:

答案 0 :(得分:0)

如果您使用自己Service的蓝牙API,可能会更好,因为Activity可以随时销毁。我认为这将解决问题,如果有的话,因为只有一个Service。该服务可以使用Handler将消息传递给活动。