Je suis relativement nouveau dans le monde d'Android et le modèle UI/Thread est encore confus.Est-ce la meilleure façon de montrer le contenu?
Voici ce que je suis en train de faire:
Charger des données à partir du Web Manipulez-les les Afficher Afficher un AlertDialog s'il y a un problème
que je fais actuellement comme ça, mais Je ne suis pas sûr que l'utilisation de nombreux threads de ce genre 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 ma méthode loadResorts termine avec
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
Merci Peter Je pensais que cela ne résoudrait pas mon problème, donc je n'ai pas vraiment essayé. Maintenant, si j'essaie d'utiliser AsyncTask. Je rencontre un autre problème \t protected void onPreExecute() { \t \t super.onPreExecute(); \t \t \t \t préfs = PreferenceManager.getDefaultSharedPreferences (getBaseContext()); \t} Comment obtenir le contexte? Merci – Jonas
Vous devez le passer dans le constructeur. Lorsque vous étendez AsyncTask, créez un constructeur qui prend 'Context' comme paramètre. –
Ho bien ... si je savais que c'était si facile ... Merci – Jonas