如何处理Runnable生成的对象?

时间:2018-12-02 22:24:43

标签: java android

我有一个Android应用程序,该应用程序通过使用某些 Runnable (在某些 MainActivity 内部)生成数字。我正在尝试获取这些数字的指数移动平均值并将其显示在 TextView 中。处理该问题的正确方法是什么?无论出于何种原因,一种简单的方法都会生成NaN。我只有一个星期的Java和Android经验,所以这种情况使我感到非常困惑。

1 个答案:

答案 0 :(得分:1)

您基本上想跳出同步差距。

有多种方法。我会提到最简单的一个,它需要Runnable知道它是最后一个run()

在这种情况下,将所有结果存储在Runnable外部范围内的变量中。最后运行的Runnable会计算出并输出您的聚合函数。

final List<Number> myNumbers = ...
Runnable myRunnable = new Runnable() {
    public void run() {
        ...
        myNumbers.add(partialResult);
        if (iAmTheLastRunStanding()) {
            aggregateAndOutput(myNumbers);
        }
    }
}
...
myRunnable.run();
...
myRunnable.run();
...