2010-12-05 25 views
0

J'essaie d'implémenter le retour d'une activité sans avoir besoin d'actualiser l'écran. Pour autant que je vois, il y a 4 états possibles pour traiter:onResume() sans appeler setupWebView() après avoir renvoyé l'activité

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

mon problème est que, après le retour d'autres activités dans mon application, setupWebView() est appelée à chaque fois provoquant un délai d'actualisation de l'écran. L'actualisation est quelque peu nécessaire en revenant des préférences (par exemple, le GPS après l'activation obtient un correctif), mais certainement pas après le retour d'une activité car le délai de repeindre l'écran est gênant et ralentit le flux de travail de mon app.

Quelqu'un peut-il s'il vous plaît aviser comment gérer cela dans mon onResume() afin d'éviter tous les appels de 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(); 
} 

Répondre

0

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

+0

Cela a du sens. Je vais essayer, merci. – qubz