我想运行一个经典的洪水填充算法,它可以直观地表示算法的进展情况;即一系列变黑的按钮以显示算法的顺序。我不想通过生成递归算法的迭代版本来作弊。P oorly 选项卡式伪代码前面:
public void floodFill(int x, int y, String targetColor,String replacementColor) {
if *out of bounds* return
else
if button = target then return
else
Switchbuttontoblack(button);
PAUSE;
floodFill(x - 1, y, targetColor, replacementColor);
floodFill(x + 1, y, targetColor, replacementColor);
floodFill(x, y - 1, targetColor, replacementColor);
floodFill(x, y + 1, targetColor, replacementColor);
}
但是,虽然算法在那里执行,但按钮只会在算法结束时一次性改变颜色。
这可能是由于在Android 计时器中更新 textview (UI)时的非 UI 线程。
因此,我在算法的 PAUSE 行(即 handler.post
(runnable);
可运行在哪里
private Runnable runnable = new Runnable() {
public void run() {
Log.d("RUNableworking","RUNableworking");
handler.postDelayed(this, 1000);
}
};
从 Floodfill 线程运行 = 没有。从 onCreate 运行我看到日志很好。
我不太热衷于轮询可运行文件;必须有更好的方法来做到这一点?