返回java中函数计算的中间结果
可能吗?我的函数中的计算占用了大量处理器时间。我必须使用进度条返回java中函数计算的中间结果,java,android,Java,Android,可能吗?我的函数中的计算占用了大量处理器时间。我必须使用进度条 public int func() { for (int i = 0; i < 10 ; i ++) { return i;//i need 10 returns of this for broadcast or progressbar. } } public int func() { 对于(int i=0;i
public int func()
{
for (int i = 0; i < 10 ; i ++)
{
return i;//i need 10 returns of this for broadcast or progressbar.
}
}
public int func()
{
对于(int i=0;i<10;i++)
{
return i;//我需要10次返回用于广播或progressbar。
}
}
您也可以在GUI后面使用计算。并使用()发送进度。并使用()发送最终结果
如果我将您的示例集成到android开发示例中,它将如下所示
new DoMyCalculations(1000);
private class DoMyCalculations extends AsyncTask<Integer, Integer, Integer> {
protected Long doInBackground(Integer... params) {
int sum = 0;
for (int i = 0; i < params; i++) {
sum += i;
publishProgress(i);
}
return sum;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress); //a function in your GUI which shows progress
}
protected void onPostExecute(Long result) {
showDialog("Sum is: " + result);//a function in your GUI which shows results
}
}
新域计算(1000);
私有类域计算扩展异步任务{
受保护的长doInBackground(整数…参数){
整数和=0;
对于(int i=0;i
Android为这类事情提供了类。特别是在示例中的onProgressUpdate
中,您将始终返回0。不,这是不可能的return
将控制权交给调用当前方法的方法。您正在寻找C#的yield return
,Java不支持该方法。考虑使用<代码>异步任务< /代码>。如果我使用static,我可以改变变量的值,但是这个函数不让其他函数知道变量是否被改变了。我知道。但现在我在其他函数中有非常庞大的逻辑,这很难粘贴到异步任务中。无论如何,这个庞大的逻辑不应该出现在您的GUI中。如果它存在于其他创建的类中,您可以尝试在这些类中实现Asynctask。尽管如此,这也是你问题的正确答案,所以请接受它^^^但是我如何在另一个类中与AsyncTask和主类中的progressbar交互?好的,我现在有访客,所以我无法完成示例。您可以发送包含调用asyncTask的活动的对象。类似于new-domaycalculations(new-Object[]{this,1000})
和您的Asynctask=私有类domaycalculations扩展了Asynctask{
。onPostExecute可以使用传递的活动来回调。gui=(MainActivityty)参数[0]
和gui.taskComplete(result)`谢谢。但我正在寻找另一种方法。