问题描述
这是我的代码:
private val nsdManager = (context.getSystemService(Context.NSD_SERVICE) as NsdManager)
fun go() {
val discoveryListener = object : NsdManager.DiscoveryListener { ... }
nsdManager.discoverServices("_sonos._tcp.",NsdManager.PROTOCOL_DNS_SD,discoveryListener)
}
此代码已运行良好数月,但昨天它刚刚停止在 Pixel 3(Android 11,1 月 5 日安全补丁)上运行。 discoveryListener.onDiscoverStarted
和 discoveryListener.onDiscoveryStopped
按预期被回调。没有 discoveryListener.onStartDiscoveryFailed
失败。但是 discoveryListener.onServiceFound
再也不会被回调了。相同的代码在同一 wifi 网络上的 Galaxy S9(Android 10)上运行良好。相同的代码在 Pixel 3 上运行良好(直到昨天)。
NsdManager
是否对协程和线程或活动与应用程序上下文敏感?我想也许我一直在用协程做的一些工作可能导致它。但现在,即使是生产应用也不会仅在此设备上返回任何 onServiceFound
结果。
是否有可能 NsdManager
缓存结果并进入错误状态?如果是这样,我如何重置此状态?以下是我尝试过的一些方法:
- 卸载/重新安装
- 清除应用存储空间
- 忘记 wifi 网络并重新连接
- 等待 24 小时
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)