Карты Google Android не отвечают должным образом после возврата из беспроводного подключения и настройки, запущенные с намерения - PullRequest
0 голосов
/ 28 марта 2012

Так что у меня возникает проблема, когда я выполняю следующий код.

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);

Вопрос в том, есть ли лучший способ решить эту проблему, чем использование потока и некоторое время ожидания включения Интернета.

1 Ответ

0 голосов
/ 28 марта 2012

Хорошо, выяснил, что было не так. Я зацикливал проверку соединения в неправильной части кода, правильный код для checkInternet () -

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(); 
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...