J'ai une question sur la façon de rendre une application de navigation plus rapide et plus stable.Problème de performance sur l'application de navigation MapView d'Android
La couche de base de mon application est une carte simple, recouverte de plusieurs superpositions (2 marqueurs pour le départ et la destination et un pour l'itinéraire).
Mon idée est d'implémenter un thread pour afficher la route, afin que l'application ne raccroche pas lors du calcul d'une route plus complexe (comme c'est le cas actuellement).
Après la mise en œuvre du fil, il n'y a pas de mises à jour spectacles de plus, vous pouvez peut-être me aider avec un petit coup d'œil à un extrait de mon code ci-dessous:
private class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location loc) {
posUser = new GeoPoint((int) (loc.getLatitude() * 1E6), (int) (loc
.getLongitude() * 1E6));
new Thread(){
public void run(){
mapView.invalidate();
// Erase old overlays
mapView.getOverlays().clear();
// Draw updated overlay elements and adjust basic map settings
updateText();
if(firstRefresh){
adjustMap();
firstRefresh = false;
}
getAndPaintRoute();
drawMarkers();
}
};
}
Certaines fonctionnalités ont été résumées à une méthode comme " drawMarkers() "ou" updateText() "... (ils n'ont pas besoin de plus d'attention ;-))
salut, vous avez raison, je n'ai pas commencé le fil * honte *. Maintenant, ma route est affichée, je vais avoir quelques tests sur les performances ;-) – poeschlorn
Note: Je pense que vous êtes dans un comportement non pris en charge/indéfini lorsque vous mettez à jour en dehors du thread principal de l'interface utilisateur. Le modèle Handler est votre ami. –
et qu'en est-il de l'utilisation d'une méthode synchronisée pour mettre à jour la carte? – poeschlorn