Domanda

Sto cercando di implementare ritorno da un'attività senza la necessità di aggiornare la schermata. Per quanto vedo, ci sono 4 possibili stati di maniglia:

  1. I due "Usa reti wireless" e "Usa satelliti GPS" sono disabilitate (utente viene indirizzato alle preferenze La mia posizione e non ha permesso di continuare se entrambi sono sono disabilitati)
  2. Uno di questi due sono abilitati (1 su 2 possibilità) 3, entrambi sono abilitati

Il mio problema è che dopo il ritorno da altre attività nella mia app, setupWebView () viene chiamato ogni volta causando un ritardo di aggiornamento dello schermo.

L'aggiornamento è in qualche modo necessaria ritorno dalle preferenze (ad esempio GPS dopo l'abilitazione ottiene una correzione), ma certamente non dopo il ritorno da un'attività come il ritardo nel ri-dipingere lo schermo è fonte di distrazione e rallenta il flusso di lavoro di mia app .

Potrebbe qualcuno si prega di consiglio su come gestire questo nel mio onResume () in modo da evitare tutte le chiamate setupWebview.

Ecco il codice dal mio onResume () all'interno della mia attività principale:

    @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();
}
È stato utile?

Soluzione

Usa una bandiera boolean e utilizzarlo per passare la chiamata a setupWebView() - e forse la maggior parte del codice nel tuo metodo di onResume() - nei casi in cui si sa che è sicuro per saltarlo. Tu sei colui che sta chiamando startActivity() per andare alla schermata di preferenze di posizione, e quindi tu sei colui che sa se o non avete bisogno di chiamare setupWebView().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top