我使用AsyncTask来执行一个漫长的过程。从doInBackground中的函数内部publishProgress?
我不想将我的长处理代码直接放在doInBackground中。相反,我的长程序代码位于另一个类中,我在doInBackground中调用它。
我想能够从longProcess函数内部调用publishProgress。 在C++中,我会将一个回调指针传递给我的longProcess函数publishProgress。
我该如何做到这一点在Java?
编辑:
我漫长的过程代码:
public class MyLongProcessClass
{
public static void mylongProcess(File filetoRead)
{
// some code...
// here I would like to call publishProgress
// some code...
}
}
我的AsyncTask代码:
private class ReadFileTask extends AsyncTask<File, Void, Boolean>
{
ProgressDialog taskProgress;
@Override
protected Boolean doInBackground(File... configFile)
{
MyLongProcessClass.mylongProcess(configFile[0]);
return true;
}
}
编辑#2 漫长的过程方法也可以是非静态的,并呼吁像这个:
MyLongProcessClass fileReader = new MyLongProcessClass();
fileReader.mylongProcess(configFile[0]);
但这并不能改变我的问题。
它可以工作,如果我的LongOperation类没有调用xmlReader.parse(耗时代码所在的位置)。看起来我会陷入一个简单的旋转进度对话框。 – 2011-04-01 19:43:20
这似乎是一个很好的解决方案。竖起大拇指! – Wroclai 2011-04-01 21:42:11
@Regis St-Gelais如果你试图监视解析的进度,你可以试试[这种方法]或者[这个方法](http://stackoverflow.com/questions/5015856/android-sax-parser-progress-monitoring)或[this一个](http://stackoverflow.com/questions/3100013/java-sax-parser-progress-monitoring) – 2011-04-01 21:49:52