Question

Je suis relativement nouveau dans le monde d'Android et le modèle de l'interface utilisateur / fil est toujours source de confusion.

Voici ce que je suis en train de faire:

Charger des données à partir du Web Manipulez-les Montre leur Afficher un AlertDialog s'il y a un problème

Je fais actuellement comme ça, mais je ne suis pas sûr que l'utilisation de nombreux fil comme ça est la meilleure façon de le faire.

A l'intérieur du onCreate ()

  final ProgressDialog pd = ProgressDialog.show(this, "", loadingText, true);
  final AlertDialog.Builder b = new AlertDialog.Builder(this);

  new Thread(new Runnable() {

   @Override
   public void run() {
    try {
     loadResorts();
    } catch (ResortsRetrievalException e) {
     runOnUiThread(new Runnable() {
      @Override
      public void run() {
       b.setMessage(R.string.resorts_retrieval_error)
       .show();
      }
     });
    }
    pd.dismiss();
   }
  }).start();

Et mes loadResorts se termine avec la méthode

  final BaseAdapter a = new ResortAdapter(this, R.layout.resort_item, resorts);

  runOnUiThread(new Runnable() {
   @Override
   public void run() {
    resortsList.setAdapter(a);
   }
  });

J'ai un fil et deux appels de runOnUiThread pour cela. Je pense qu'il pourrait y avoir une meilleure solution sans avoir à faire face à ces discussions. Ai-je raison?

Merci

Était-ce utile?

La solution

Utilisez AsyncTask - il a été créé pour ce genre de scénarios: exécution d'une tâche de fond ou d'un processus (long), en mettant à jour encore l'interface utilisateur de manière correcte (sur EDT).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top