2016-07-12 5 views
1

das ist eine theoretische Frage!Festlegen von Werten für den UI-Thread, nachdem Daten erfasst wurden?

Ich entwickle derzeit eine Android-Anwendung. Dort würde ich gerne Daten sammeln und dann die Benutzeroberfläche bearbeiten. Aber wenn ich auf den Abschluss der Datenerfassung warte, blockiere ich offensichtlich die UI-Thread().

Die Frage ist also: Wie kann ich app auf die Datenerfassung warten, ohne den UI-Thread zu blockieren? Ist ein Ladebildschirm mit dem Appsymbol und einem Fortschrittsbalken eine Option?

Bearbeiten: Um es klar zu machen: Meine Daten sammeln ist in mehreren kleinen Daten Abrufen getrennt!

Edit 2: Ich sammle die Daten aus dem Internet!

Vielen Dank im Voraus!

+0

Ist es darüber, wie lange laufende Arbeit auf einem separaten Thread zu tun? Oder wie die UI aussehen soll, während der separate Thread beschäftigt ist? – Egor

+1

Sie können es mit async Aufgabe tun, wo Sie in der Lage sein werden, Ui-Thread zu behandeln sowie Daten gleichzeitig zu sammeln – Vickyexpert

+0

woher sammeln Sie Daten? Ist das ein Webservice? –

Antwort

0

Sie können einen AsyncTask für einfaches Datenholen verwenden. Wenn es komplizierter Verwendung Volley

0

Deklarieren Sie eine AsyncTask, zeigen Sie einfach ProgressDialog PreExecute von AsyncTask. Machen Sie das zeitaufwändige und das Einfrieren von Anwendungen wie das Abrufen von Daten von Link auf doInBackground. Funktioniert der Post-Link-Abruf in onPostExecute von asyncTask und schließt den `ProgressDialog 'ab. AsyncTask wird auf einem anderen Thread von der Hauptaktivität ausgeführt und daher friert die Anwendung nicht ein.

ASYNC TASK

class ClassName extends AsyncTask<String, Void, Integer> { 
    protected void onPreExecute() { 
     progress = ProgressDialog.show(context, "", "Loading ...", 
       false, true); 
    } 

    @Override 
    protected Integer doInBackground(String... params) { 
     // Your Code 
    } 

    protected void onPostExecute(Integer result) { 

     if (progress != null) { 
      progress.dismiss(); 
     } 
    } 
}