ネットワークが利用可能かどうかを確認するときに一貫した結果を得るのにいくつかの問題があります。
このコードスニペットをクラス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の間、またはその逆に移動するときに発生するようです。更新しても、起動したコンテキストが残っているようです。
誰かがここで問題になる可能性があることを知っていますか?