Question

Je suis en train de mettre en œuvre le retour d'une activité sans avoir besoin de rafraîchir l'écran. Pour autant que je vois, il y a 4 états possibles pour manipuler:

  1. Les deux « Utiliser les réseaux sans fil » et « Utiliser les satellites GPS » sont désactivées (utilisateur est dirigé vers les préférences Ma position et non autorisés à continuer si sont soit sont désactivées)
  2. L'un de ces deux sont activés (1 de 2 possibilités) 3, sont activés deux

Mon problème est que, après le retour d'autres activités dans mon application, setupWebView () est appelée à chaque fois provoquant un retard de rafraîchissement de l'écran.

L'actualisation est un peu nécessaire retour des préférences (par exemple GPS après l'activation obtient une solution), mais certainement pas au retour d'une activité que le retard de temps en re-peinture l'écran est source de distraction et ralentit le flux de travail de mon application .

Quelqu'un pourrait-il conseiller s'il vous plaît comment gérer cela dans mon onResume () afin d'éviter tous les appels setupWebview.

Voici le code de mon onResume () dans mon activité 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();
}
Était-ce utile?

La solution

Utilisez un drapeau boolean et l'utiliser pour passer l'appel à setupWebView() - et peut-être la plupart du code dans votre méthode de onResume() - dans les cas où vous savez qu'il est sûr de le sauter. Vous êtes celui qui appelle startActivity() aller à l'emplacement écran des préférences, et par conséquent, vous êtes celui qui sait si oui ou non vous devez appeler setupWebView().

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top