Pregunta

Estoy tratando de poner en práctica su regreso de una actividad sin necesidad de actualizar la pantalla. Por lo que veo, hay 4 posibles estados de mango:

  1. Los dos "Usar redes inalámbricas" y "Usar satélites GPS" están desactivadas (usuario se dirige a mi ubicación preferencias y no se permite que continúe, si bien se están desactivados)
  2. Uno de estos dos están activadas (1 de 2 posibilidades) 3, ambos están activados

Mi problema es que después de regresar de otras actividades en mi aplicación, setupWebView () se llama cada vez que causa un retraso actualización de la pantalla.

es algo necesario La actualización de regresar de las preferencias (por ejemplo, GPS después de habilitar consigue un punto de referencia), pero ciertamente no después de regresar de una actividad como el retardo de tiempo en volver a pintar la pantalla está distrayendo y ralentiza el flujo de trabajo de mi aplicación .

¿Puede alguien aconsejar por favor cómo manejar esto dentro de mi onResume () de modo de evitar todas las llamadas setupWebview.

Este es el código de mi onResume () dentro de mi actividad principal:

    @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();
}
¿Fue útil?

Solución

Usar una bandera boolean y utilizarla para omitir la llamada a setupWebView() - y tal vez la mayor parte del código en su método onResume() - en los casos donde se sabe que es seguro para saltarla. Usted es el que está llamando startActivity() para ir a la pantalla de preferencias de ubicación, y por lo tanto usted es el que sabe si está o no necesita setupWebView() llamada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top