У меня возникли проблемы с получением непротиворечивых результатов при проверке доступности сети.
Я использую этот фрагмент кода внутри класса 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, выполняющий ту же логику, и все же эта проверка не проходит.
Кажется, что это преимущественно происходит, когда он перемещается между сотовой связью для передачи данных и Wi-Fi, или наоборот. Кажется, что контекст, в котором он был запущен, остается прежним, хотя я обновляю его.
Кто-нибудь знает, что может быть здесь проблема?