Threaded Web Service Call
Ich fordere Informationen von einem Webdienst in meiner Android-App an. Der Webdienst gibt eine Liste von Elementen zurück, wobei jedes Element ein base64-Image und einige Informationen enthäl
Erste Methode: Greifen Sie einfach auf den Webdienst zu und erhalten Sie das Ergebnis. Dies bedeutet ein Einfrieren der Benutzeroberfläche, bis die Daten heruntergeladen wurden. Keine gute Lösung
Zweite Methode: Legen Sie den Datendownload in einen Thread und zeigen Sie eine Fortschrittsanzeige mit einer Meldung an.
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();
}
};
Dies zeigt ein schönes Ladebild und die Meldung. Der Benutzer muss warten, bis der gesamte Download abgeschlossen ist. Ich weiß nicht, wie ich den getdata () -Thread abbrechen soll.
Dritte Methode: Ich hätte gerne etwas, der Benutzer drückt einen Knopf, um Daten abzurufen, ein Thread lädt Element für Element vom Webdienst herunter und zeigt es sofort in der Liste an. Die Nutzung kann die Anfrage jederzeit per Knopfdruck abbrechen.
Aber wie geht das? Oder gibt es einen anderen Weg?