Invité Posté(e) 20 octobre 2011 Share Posté(e) 20 octobre 2011 Bonjour à tous, Développeur androïde depuis 2 semaines, je cherche à utiliser un Thread car je dois dans un premier temps localiser l'utilisateur puis uploader des images pour remplir une liste. J'ai pour le moment fais tous ces traitements les uns à la suite des autres mais le problème c'est que ma progressDialog se fige au moment où je récupère du serveur les images. C'est la méthode afficherAdresse(); qui prends du temps et qui rempli une listView J'ai essayé de mettre ne place un thread mais sans succès. Voici un bout de mon code public class ResultByLocalisation extends Activity implements LocationListener{ private LocationManager lManager; private Location location; private ProgressDialog progressDialog; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); progressDialog = new ProgressDialog(this); progressDialog.setMessage("Localisation en cours"); setContentView(R.layout.resultbylocalisation); //On récupère le service de localisation lManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); obtenirPosition(); } private void obtenirPosition() { //Affiche la progressdialog progressDialog.show(); //On demande au service de localisation de nous notifier tout changement de position //sur la source (le provider) choisie, toutes les minutes (60000millisecondes). //Le paramètre this spécifie que notre classe implémente LocationListener et recevra //les notifications. lManager.requestLocationUpdates("network", 600, 0, this); } public void onLocationChanged(Location location) { //Lorsque la position change... Log.d("Tuto géolocalisation", "La position a changé."); //... on sauvegarde la position this.location = location; //... on l'affiche - C'est cette méthode qui est trés longue et qui rempli une listview afficherAdresse(); //... et on spécifie au service que l'on ne souhaite plus avoir de mise à jour lManager.removeUpdates(this); } Merci pour votre aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
Frack94 Posté(e) 21 octobre 2011 Share Posté(e) 21 octobre 2011 Bonjour, Tu as regardé du côté des AsyncTask et IntentService? Ils ont été spécialement mis en place pour Android contrairement aux threads classiques. Pour ma part, je me suis basé sur ce tuto pour implémenter un IntentService. Le principe: - créer un intentservice et implémenter la seule méthode onHandleIntent qui fera le traitement en tache de fond - tu lances ce service depuis ton activité grâce à la méthode startService - pour mettre à jour ta ProgresDialog, tu fais un sendBroadCast depuis ton service. - le message sera reçu par une classe interne étendant BroadcastReceiver dans ton actvité qui pourra mettre à jour ta ProgressDialog. N'oublie pas de déclarer ton service dans le manifest et d'enregistrer ton BroadcastReceiver dans la méthode onResume de ton activité Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.