2016-03-22 19 views
0

Ich bin neu bei Android. Ich versuche asyncTask zu verwenden. Ich verstehe, dass es etwas namens onProgressUpdate gibt.Fortschritts-Update in AsyncTask, Android

ich Daten von Online-Server und die Gesamtdaten herunterlade ist etwa 2000.

in Hintergrund Async ich folgendes innerhalb der for-Schleife getan habe ich immer die Veröffentlichung der Wert von I. etwas wie folgt aus:

@Override 
protected String doInBackground(JSONArray... params) 
{ 
    for (int i = 0; i < params[0].length(); i++) 
    { 
    //I DO MY BACKGROUND PROCESS 

    publishProgress(i);     
    } 
return null; 

}

protected void onProgressUpdate(Integer... values) { 
      Log.e("Value", "onProgressUpdate - " + values[0]); 
     } 

Diese Drucke zählen tatsächlich eins nach dem anderen bis zum Jahr 2000. Nun, wie würde ich, wenn die Zählung in Prozent zeigen zu machen. Wie 1%, 2% bis 100%.

Dank

+0

Log.e ("Value", "onProgressUpdate -" + ((Werte [0]/2000) * 100) + "%"); –

+0

@KhizarHayat .. das zeigt 2000% – user6060320

+0

Sorry, ich wurde aktualisiert: P –

Antwort

0

Die Formel in den Kommentaren angegeben ist, aber es ist sicherer, dynamisch zu berechnen, anstatt bis 2000 fest einprogrammiert .

AsyncTask<JSONArray, Integer, String> task = new AsyncTask<JSONArray, Integer, String>() { 
      private int maxProgress; 

      @Override 
      protected String doInBackground(JSONArray... params) { 

       maxProgress = params[0].length(); 
       for (int i = 0; i < maxProgress; i++) { 
        //I DO MY BACKGROUND PROCESS 

        publishProgress(i); 
       } 

       return null; 
      } 

      @Override 
      protected void onProgressUpdate(Integer... values) { 
       Log.e("Value", "onProgressUpdate - " + (values[0] * 100/maxProgress) + "%"); 
      } 
     }; 
0

versuchen, dieses:

Verwenden double-Wert statt Integer

protected void onProgressUpdate(Double... values) { 
double percentage = (values[0]/2000)*100; 
      Log.e("Value", "onProgressUpdate - " + percentage+"%"); 
} 
+0

Ich bekomme Werte wie folgt: http://www.beetxt.com/XeE/ – user6060320

+0

es bedeutet, Berechnung ist richtig, wenn Willst du den Wert kürzen, kannst du es mit Math.floor methos machen :) – Amy

+0

OK. Lass es mich wissen, überprüfe es. Vielen Dank! – user6060320