Android Wifi Direct断开连接的正确方式:removeGroup、channel close还是两者都用?
Android API 27中WifiP2pManager.Channel.close()方法的常见疑问解答
是否是removeGroup的更优替代方案?
close()和removeGroup的定位完全不同:removeGroup是专门用来解散当前设备所在的Wi-Fi Direct组(无论设备是组所有者还是客户端);而close()的核心作用是释放Channel关联的系统资源,切断与WifiP2pManager的通信通道,它会间接触发组解散,但这只是附带效果。
如果需求仅仅是解散组,用removeGroup更直接;如果要彻底结束Wi-Fi Direct相关操作、释放系统资源,close()更合适,没法直接判定谁是更优替代,得看具体使用场景。是否需要同时调用两者?
不需要同时调用。调用close()后,系统会自动处理组解散和资源释放;如果已经用removeGroup解散了组,后续调用close()来收尾释放资源是合理的,但没必要同时执行两者,因为close()已经涵盖了解散组的间接效果。调用close()后,是需要调用initialize()获取新通道,还是可以继续使用现有通道?
调用close()之后,当前的Channel会彻底失效,必须重新调用WifiP2pManager.initialize()获取新的Channel,才能继续使用Wi-Fi Direct相关功能——因为close()已经释放了该Channel绑定的所有系统资源,原对象无法再与系统服务建立通信。
内容的提问来源于stack exchange,提问作者johnnyb
相关产品推荐
相关产品推荐

