Je demande des informations à partir d'un service Web dans mon application Android. Le service Web renvoie une liste d'éléments, chaque élément ayant une image base64 et quelques informationsAppel de service Web fileté
Première méthode: accédez simplement au service Web et obtenez le résultat. Cela signifie un blocage de l'interface utilisateur jusqu'à ce que les données soient téléchargées. Pas une bonne solution
Deuxième méthode: mettre le téléchargement de données dans un fil, et afficher une barre de progression avec un message.
private void StartGettingData()
{
viewInfo = new Runnable(){
public void run() {
getData(); //from the web service
}
};
Thread thread = new Thread(null, viewInfo, "MagentoBackground");
thread.start();
progressDialog = ProgressDialog.show(TracksListActivity.this,
"Please wait...", "Retrieving data from WEB...", true);
}
private void getData(){
{
get data from web service into a list and then
runOnUiThread(returnRes);
}
private Runnable returnRes = new Runnable() {
public void run() {
populate the listview adapter with info from the web service result list and
progressDialog.dismiss();
generalTrackInfoAdapter.notifyDataSetChanged();
}
};
Ceci montre une belle image et le message. L'utilisateur devra attendre que tout le téléchargement soit terminé. Je ne sais pas comment annuler le thread getdata().
Troisième méthode: Je voudrais avoir quelque chose comme, l'utilisateur appuie sur un bouton pour obtenir des données, un fil télécharge élément par élément du service Web et l'affiche immédiatement dans la liste. L'utilisation peut toujours annuler la demande en appuyant sur un bouton.
Mais, comment faire? Ou y a-t-il un autre moyen?