Android WebRTC应用前台服务销毁后出现IntentReceiver泄漏问题求助
WebRTC前台服务销毁后IntentReceiver泄漏问题解决
你遇到的这个泄漏是WebRTC内部NetworkMonitorAutoDetect的广播接收器未及时注销导致的,虽然你关闭了PeerConnectionFactory,但还需要补充以下步骤:
- 显式停止NetworkMonitor:WebRTC的
NetworkMonitor会自动注册网络监听的广播接收器,仅关闭工厂不会自动停止它。需要在服务销毁时调用NetworkMonitor.getInstance().stop()(不同版本可能略有差异,旧版可尝试NetworkMonitor.stop()),这个方法会内部注销那个泄漏的IntentReceiver。 - 严格按顺序清理资源:销毁流程必须遵循以下顺序:
- 关闭并释放所有
PeerConnection实例(调用close()和dispose()) - 释放
MediaStream、音视频轨道等媒体资源 - 调用
PeerConnectionFactory.stopInternalTracingCapture()和PeerConnectionFactory.dispose()关闭工厂 - 最后调用
NetworkMonitor的停止方法
- 关闭并释放所有
- 确保清理逻辑在主线程执行:WebRTC的资源释放操作要求在主线程完成,别在后台线程执行销毁逻辑,否则会导致接收器无法及时注销。
泄漏提示原文:
CallService has leaked IntentReceiver org.webrtc.NetworkMonitorAutoDetect@bcf6651 that was originally registered here.
内容的提问来源于stack exchange,提问作者Pedif
相关产品推荐
相关产品推荐

