onResume () sans établissement d'appel WebView () après le retour de l'activité
-
08-10-2019 - |
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:
- 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)
- 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();
}
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()
.