2010-08-17 6 views
1

J'ai un gestionnaire qui reçoit un message sur chaque mise à jour de l'emplacement, toutes les 5 secondes. De l'endroit où je peux demander la ville actuelle dans laquelle l'utilisateur emménage. Ensuite, je veux télécharger des données une seule fois et seulement quand la ville change. Comment puis-je réaliser cela?UpdateHandler, faire une chose seulement quand le déclencheur est vrai, Android

Handler myViewUpdateHandler = new Handler(){ 

    public void handleMessage(Message msg) { 
      switch (msg.what) { 
      case UPDATE_LOCATION: 
       mc.animateTo(geosenseo.getCurrentPoint()); 
       mapView.invalidate(); 

        //a async task sets the currentCity field 

       if(trigger && (currentCity != "")){ 
        firstCity = currentCity; 
        trigger = false; 
       } 

       if((currentCity != "") && (firstCity != "")){ 
        if(firstCity != currentCity){ 
         //download only when city changes 
         trigger = true; 
        } 
       } 

      } 

      super.handleMessage(msg); 
    } 
}; 

comme vous pouvez le voir J'ai joué avec les vars. des idées? grâce

+0

Comment obtenez-vous la ville actuelle de l'emplacement? – Pentium10

+0

dans le code qui est marqué avec // une tâche asynchrone définit le champ currentCity Je démarre une asynctask, qui en arrière-plan télécharge des géodonnées, dans ce cas la ville, j'utilise geocoder de importer android.location.Address; import android.location.Geocoder; –

Répondre

1

Cela a permis ... comparer les chaînes avec égaux et ce qui suit si la déclaration

if(!currentCity.equals("")){ 
    if(!firstCity.equals(currentCity)){ 
     firstCity = currentCity; 
    } 
}