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