Uso una AsyncTask para realizar un proceso largo.publishProgress desde dentro de una función en doInBackground?
No quiero colocar mi código de proceso largo directamente dentro doInBackground. En cambio, mi código de proceso largo está ubicado en otra clase, a la que llamo doInBackground.
Me gustaría poder llamar a publishProgress desde dentro de la función longProcess. En C++, pasaría un puntero de devolución de llamada a publishProgress a mi función longProcess.
¿Cómo hago eso en Java?
EDIT:
Mi larga código de proceso:
public class MyLongProcessClass
{
public static void mylongProcess(File filetoRead)
{
// some code...
// here I would like to call publishProgress
// some code...
}
}
Mi código AsyncTask:
private class ReadFileTask extends AsyncTask<File, Void, Boolean>
{
ProgressDialog taskProgress;
@Override
protected Boolean doInBackground(File... configFile)
{
MyLongProcessClass.mylongProcess(configFile[0]);
return true;
}
}
editar # 2 El método largo proceso también podría ser no estático y llamado así esto:
MyLongProcessClass fileReader = new MyLongProcessClass();
fileReader.mylongProcess(configFile[0]);
Pero eso no cambia mi problema.
podría funcionar si mi clase LongOperation no llamara a xmlReader.parse (donde se encuentra el código que consume mucho tiempo). Parece que voy a tener un simple diálogo de progreso rotativo. –
Esa parece ser una buena solución. ¡Pulgares hacia arriba! – Wroclai
@Regis St-Gelais si está tratando de controlar el progreso del análisis, puede probar [este enfoque] (http://stackoverflow.com/questions/5015856/android-sax-parser-progress-monitoring) o [este uno] (http://stackoverflow.com/questions/3100013/java-sax-parser-progress-monitoring) –