Frage

Ich versuche, von einer Aktivität zur Umsetzung der Rückkehr, ohne den Bildschirm zu aktualisieren. Soweit ich sehe, gibt es 4 mögliche Zustände zu behandeln:

  1. Die beiden „Drahtlose Netzwerke verwenden“ und „GPS-Satelliten“ sind deaktiviert (Benutzer Mein Standort Präferenzen gerichtet ist und nicht weitergehen darf, wenn entweder sind deaktiviert)
  2. Eine dieser beiden aktiviert sind (1 von 2 Möglichkeiten) 3 Beide sind aktiviert

Mein Problem ist, dass, nachdem sie von anderen Aktivitäten in meinem app Rückkehr setupWebView () jedes Mal, was zu einer Bildschirmaktualisierungsverzögerung genannt wird.

Die Aktualisierung ist etwas notwendig, von den Präferenzen der Rückkehr (zB GPS nach der Aktivierung wird ein Update), aber sicher nicht, nachdem sie von einer Aktivität als die Zeitverzögerung bei der Rückkehr wieder Malerei des Bildschirm ablenkt und verlangsamt den Workflow meiner App .

Könnte jemand bitte beraten, wie man damit umgehen in meinem onResume (), so dass alle setupWebview Anrufe zu vermeiden.

Hier ist der Code von meinem onResume () innerhalb meiner Haupttätigkeit:

    @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();
}
War es hilfreich?

Lösung

Verwenden Sie eine boolean Flagge und es verwenden, um den Anruf zu setupWebView() überspringen - und vielleicht die meisten der Code in Ihrer onResume() Methode - in Fällen, in denen Sie wissen, dass es sicher ist, es zu überspringen. Sie sind derjenige, der startActivity() an den Standortpräferenzen Bildschirm zu gehen ruft, und damit sind Sie derjenige, der weiß, ob Sie zu Anruf setupWebView() müssen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top