在检查网络是否可用时,我在获得一致的结果时遇到了一些问题。
我在 AppPreferences 类中使用此代码片段来检查网络的可用性。
/**
* @return the networkAvailable
*/
public boolean isNetworkAvailable() {
connectionManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
networkAvailable = connectionManager.getActiveNetworkInfo() != null && connectionManager.getActiveNetworkInfo().isConnected();
return networkAvailable;
}
在每次运行之前,我将上下文设置如下:
timer.scheduleAtFixedRate(
new TimerTask() {
public void run() {
appPreferences.setContext(getBaseContext());
if (appPreferences.isNetworkAvailable()){
// perform task
}
}
},
0,
UPDATE_INTERVAL);
我确实知道它与后台线程无关,因为我有一个 onReceive 调用执行相同的逻辑,但此检查仍然失败。
它似乎主要发生在它在蜂窝数据连接和 wifi 之间移动时,反之亦然。即使我更新它,它开始的上下文似乎仍然存在。
有谁知道这里可能是什么问题?