我经常只想触发某个函数一次,但我需要从另一个重复调用的函数中触发它。例如,拍摄某物的快照以备后用。我通常通过设置一个全局布尔值来做到这一点。
我想知道我这样做的方式是否实际上是最好的方式?
我似乎记得读过全局变量不好,全局布尔变量更糟!
无论如何,这就是我通常只完成一次触发某个方法的方式:
在我最初的一组变量中......
private var myStatus:Boolean = false;
然后,在经常调用的函数中......
if (!myStatus) {
doMyFunction();
myStatus = true;
}
对我来说这似乎很合乎逻辑,但这是正确的吗?
更新:好吧,根据我从您的答案中学到的知识,我现在不是检查全局布尔变量,而是首先检查 XML 节点是否存在(在写入磁盘之前,我将图像存储在 XML 结构中),并且,如果不是,那么我将使用 base64 编码的图像数据附加一个新节点。我仍然设置了一个布尔标志,以便稍后我可以在需要时用用户编辑的图像数据覆盖空白图像。它完美地工作。感谢大家的帮助!
我现在也对在某些情况下使用该特定(线程不安全)系统感到更自在。