OnResume () без вызова SetupWebView () после подзожания от активности

StackOverflow https://stackoverflow.com/questions/4358777

Вопрос

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

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

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

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

Может ли кто-нибудь посоветовать, как обрабатывать это в моем 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();
}
Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top