特定の関数を一度だけトリガーしたいことがよくありますが、繰り返し呼び出される別の関数内からトリガーする必要があります。たとえば、後で使用するために何かのスナップショットを作成します。私は通常、グローバルブール値を設定してそれを行います。
私がやっている方法が実際に最善の方法であるかどうか疑問に思っていますか?
グローバル変数は良くない、グローバル ブール変数はさらに悪いと読んだことを思い出すようです。
とにかく、これは私が通常、特定のメソッドを一度だけトリガーする方法です。
私の最初の変数セットでは...
private var myStatus:Boolean = false;
そして、よく呼び出される関数内で...
if (!myStatus) {
doMyFunction();
myStatus = true;
}
私にはかなり論理的に思えますが、それは正しいことですか?
更新:まあ、あなたの答えから学んだことに基づいて、グローバルブール変数をチェックする代わりに、まず XML ノードが存在するかどうかをチェックします (ディスクへの書き込みが発生する前に、XML 構造内に画像を保存しています)。そうでない場合は、base64 でエンコードされた画像データを含む新しいノードを追加します。後で必要に応じてユーザーが編集した画像データで空白の画像を上書きできるように、ブール値のフラグを設定します。それは完全に機能します。ご協力ありがとうございました!
また、特定の状況でその特定の (スレッドセーフでない) システムを使用することについて、より快適に感じるようになりました。