Так что у меня возникает проблема, когда я выполняю следующий код.
private void checkInternet() {
ConnectivityManager cm = (ConnectivityManager)
getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni == null) {
Intent intent = new Intent(Settings.ACTION_WIRELESS_SETTINGS);
startActivity(intent);
}
else{
boolean isConnected = ni.isConnected();
if (!isConnected) {
Intent intent = new Intent(Settings.ACTION_WIRELESS_SETTINGS);
startActivity(intent);
while(ni == null){
ni = cm.getActiveNetworkInfo();
}
}
}
}
Я запускаю этот код из процедуры OnCreate () в MapsActivity.Проблема в том, что я получаю экран, который на мгновение в порядке, но затем меняет цвет на Lightblue.У меня такое ощущение, что это связано с тем, что я слишком быстро выхожу из экрана настроек беспроводной сети, и мобильный интернет не успевает полностью включиться.Если я выхожу и возвращаюсь к занятию, когда интернет включен, кажется, все работает нормально.
Также я обнаружил, что при установке потока в спящий режим после запуска кода он работает нормально.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.location_activity_layout);
//checkGPS();
checkInternet();
try {
Thread.sleep(10000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
map = (MapView) findViewById(R.id.mapview);
map.setSatellite(false);
map.setBuiltInZoomControls(true);
Вопрос в том, есть ли лучший способ решить эту проблему, чем использование потока и некоторое время ожидания включения Интернета.