gpt4 book ai didi

android - NetworkInfo.isConnectedOrConnecting() 在服务中返回 FALSE

转载 作者:搜寻专家 更新时间:2023-11-01 09:31:54 26 4
gpt4 key购买 nike

Service 调用时遇到 NetworkInfo.isConnectedOrConnecting() 的奇怪行为。尽管手机已连接到网络,但它只是返回 false。从 Activities 和 Fragments 中,此代码段按预期工作。

public boolean isOnline() {
if (mContext == null) {
return false;
}

NetworkInfo netInfo = mConnectivityManager.getActiveNetworkInfo();
return netInfo != null && netInfo.isConnectedOrConnecting();
}

有人遇到过这个问题吗?也许还有另一种方法可以在 Services 中检查网络连接。

最佳答案

在你的服务类中尝试这样的事情。

public boolean isOnline(Context context) {
ConnectivityManager manager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (manager == null) {
return false;
}
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
if (networkInfo != null){
if (networkInfo.isConnectedOrConnecting()) {
return true;
}
}
return false;
}

编辑:使用上下文单例:

    public class ServiceContextManager {
private static ServiceContextManager instance;

public static ServiceContextManager getInstance(Context context) {
if (instance == null) {
instance = new ServiceContextManager(context.getApplicationContext());
}

return instance;
}

private Context mContext;

private ServiceContextManager(Context context) {
mContext = context;
}
}

关于android - NetworkInfo.isConnectedOrConnecting() 在服务中返回 FALSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46490915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com