作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
从 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/
从 Service 调用时遇到 NetworkInfo.isConnectedOrConnecting() 的奇怪行为。尽管手机已连接到网络,但它只是返回 false。从 Activities 和 F
我正在开发一个 Android 平板电脑应用程序,我正在检查名为“Home”的 Activity 中的 Internet 连接。我已经在 Android 版本 4.2(平板电脑)、4.4(平板电脑)、
我是一名优秀的程序员,十分优秀!