[英]BluetoothAdapter causes activity leak
我有一个活动在听蓝牙耳机,因为它可以播放音频。 在活动的onCreate()方法中,我通过适配器注册了侦听器:
mBluetoothAdapter = BluetoothAdapter..getDefaultAdapter();
if (mBluetoothAdapter != null)
mBluetoothAdapter.getProfileProxy(getApplicationContext(), mBluetoothProfileServiceListener,BluetoothProfile.HEADSET);
然后在onDestroy()中,关闭代理:
mBluetoothAdapter.closeProfileProxy(BluetoothProfile.HEADSET, mBluetoothHeadset);
如果我多次打开和关闭活动而不连接蓝牙耳机,则所有活动都将保留在内存中。 使用内存转储,我可以看到所有这些都由android.bluetooth.BluetoothHeadset中的mServiceListener的单个引用保存。
我在开发人员文档中找不到有关如何删除侦听器以释放活动的任何内容。 有什么方法可以删除作为监听器的活动,从而释放内存?
如果您通过自己的Service
使用Bluetooth API,可能会更好,因为该Activity
可以随时被销毁。 我认为这将解决问题(如果有的话),因为将只有一个Service
。 该服务可以使用Handler
将消息传递给活动。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.