返回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)`谢谢。但我正在寻找另一种方法。