onResume () без вызова setupWebView () после повторной настройки из Activity - PullRequest
0 голосов
/ 05 декабря 2010

Я пытаюсь осуществить возврат из действия без необходимости обновлять экран.Насколько я вижу, есть 4 возможных состояния для обработки:

  1. Оба параметра «Использовать беспроводные сети» и «Использовать спутники GPS» отключены (пользователь направлен в настройки «Мое местоположение» и не может продолжатьесли оба из них отключены)
  2. Один из этих двух включен (1 из 2 вариантов) 3, оба включены

Моя проблема заключается в том, что после возврата из других действий в моем приложении, setupWebView () вызывается каждый раз, вызывая задержку обновления экрана.

Обновление в некоторой степени необходимо, возвращаясь из предпочтений (например, GPS после включения получает исправление), но, конечно, не после возвращения из Activity в качестве временизадержка перерисовки экрана отвлекает и замедляет рабочий процесс моего приложения.

Может кто-нибудь посоветует, как справиться с этим в моем onResume (), чтобы избежать всех вызовов setupWebview.

Вот код из моего onResume () в моей основной деятельности:

    @Override
protected void onResume() {
    if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
            && !locationManager
                    .isProviderEnabled(LocationManager.NETWORK_PROVIDER))
        createMyLocationDisabledAlert();

    if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
        locationManager.requestLocationUpdates(
                LocationManager.GPS_PROVIDER, 500, 0, this);
        mostRecentLocation = locationManager
                .getLastKnownLocation(LocationManager.GPS_PROVIDER);
        if (mostRecentLocation != null)
            setupWebView();
        else {
            mostRecentLocation = locationManager
                    .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
            setupWebView();
        }
    }

    else if (locationManager
            .isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
        locationManager.requestLocationUpdates(
                LocationManager.NETWORK_PROVIDER, 500, 0, this);
        mostRecentLocation = locationManager
                .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
        if (mostRecentLocation != null)
            setupWebView();
        else {
            mostRecentLocation = locationManager
                    .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
            setupWebView();
        }
    }

    // locationManager.requestLocationUpdates(provider, 500, 0, this);
    // mostRecentLocation = locationManager.getLastKnownLocation(provider);
    // } else
    // mostRecentLocation = locationManager
    // .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
    super.onResume();
}

1 Ответ

0 голосов
/ 05 декабря 2010

Используйте флаг boolean и используйте его, чтобы пропустить вызов setupWebView() - и, возможно, большую часть кода в вашем onResume() методе - в тех случаях, когда вы знаете, что его можно пропустить.Вы тот, кто звонит startActivity(), чтобы перейти на экран настроек местоположения, и, следовательно, вы тот, кто знает, нужно ли вам звонить setupWebView().

...