【发布时间】:2020-06-08 23:44:38
【问题描述】:
你应该在https://gist.github.com/PasanBhanu/730a32a9eeb180ec2950c172d54bb06a上查看初步讨论。
基本上,我们正在开发一个简单易用的解决方案来检查 android 应用程序的网络,它可以优雅地替换现在已弃用的 NetworkInfo 类,而不会中断旧应用程序的代码流。问题仅在于切换到 wifi 时,而不是切换到蜂窝时。
主要工作代码部分:
// Network Check
public void registerNetworkCallback()
{
try {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest.Builder builder = new NetworkRequest.Builder();
connectivityManager.registerNetworkCallback(builder.build(),new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
Variables.isNetworkConnected = true; // Global Static Variable
}
@Override
public void onLost(Network network) {
Variables.isNetworkConnected = false; // Global Static Variable
}
}
);
Variables.isNetworkConnected = false;
}catch (Exception e){
Variables.isNetworkConnected = false;
}
}
问题是当我们切换到 wifi 时,它出于某种原因在调用 onAvailable 后调用了 onLost。因此将静态变量的值设置为 false。即使连接了网络。
这是网络切换到wifi时的调试日志:
2019-11-23 16:54:29.136 8416-8459/com.example.simplenetwork D/FLABS:: onAvailable
2019-11-23 16:54:29.136 8416-8459/com.example.simplenetwork D/FLABS:: onCapabilitiesChanged
2019-11-23 16:54:29.136 8416-8459/com.example.simplenetwork D/FLABS:: onLinkPropertiesChanged
2019-11-23 16:54:29.136 8416-8459/com.example.simplenetwork D/FLABS:: onBlockedStatusChanged
2019-11-23 16:54:29.307 8416-8459/com.example.simplenetwork D/FLABS:: onLosing
2019-11-23 16:54:29.325 8416-8459/com.example.simplenetwork D/FLABS:: onCapabilitiesChanged
2019-11-23 16:54:29.371 8416-8459/com.example.simplenetwork D/FLABS:: onLost
2019-11-23 16:54:29.959 8416-8459/com.example.simplenetwork D/FLABS:: onLinkPropertiesChanged
2019-11-23 16:54:29.975 8416-8459/com.example.simplenetwork D/FLABS:: onLinkPropertiesChanged
2019-11-23 16:54:30.972 8416-8459/com.example.simplenetwork D/FLABS:: onLinkPropertiesChanged
2019-11-23 16:54:31.693 8416-8459/com.example.simplenetwork D/FLABS:: onLinkPropertiesChanged
2019-11-23 16:54:32.053 8416-8459/com.example.simplenetwork D/FLABS:: onCapabilitiesChanged
我正在尝试在 onCapabilitiesChanged() 中添加额外的检查,但到目前为止,没有任何事情可以解决问题而不破坏其他事情。
您可以在https://gist.github.com/PasanBhanu/730a32a9eeb180ec2950c172d54bb06a查看完整代码(以及相关进度/讨论)
我的代码版本(包含完整的调试过程)作为一个干净的单独项目,仅用于测试这一点,位于 https://gist.github.com/Abhinav1217/0ff6b39e70fa38379d61e85e09b49fe7 上。
PS:有人可以为这个问题建议更好的标题,更合乎逻辑的东西吗?
【问题讨论】:
标签: android