「タイマー」スレッドを一時停止したい....または、それを「待機」モードにして、何かが完了した後に通知したいと言うことができます。
Timer _catchTimer = new Timer();
CatchAppNameTimer _catchTimerTask = new CatchAppNameTimer(_catchTimer);
_catchTimer.schedule(_catchTimerTask, 0, 5000);
私の「TimerTask(_catchTimerTask)」は毎回ポップアップ画面を表示します....そのポップアップ画面には2つのボタンがあります-ロック解除、キャンセル。
基本的には、ユーザーがクリックするまで....ロック解除/キャンセルボタンの1つ、タイムスレッドが待機モードに設定されるまで欲しい.....ユーザーがロック解除/キャンセルボタンの1つをクリックすると..... ....その後にのみ、時間スレッドが通知されます。
現在、「timertask」の実行メソッドでブール変数を使用しています.....デッドロック状況を処理するために......つまり、TimerTask は数秒ごとに呼び出されます...ポップアップ画面がすでに表示されている場合でも示されている..........
次のように :
public void run() {
GlobalSingleton obj = null;
obj = GlobalSingleton.getInstance();
if( obj.getShowDialog() )
return;
unlockField();
}
初めて「unlockFiled()」が呼び出されたとき........ブール変数をtrueに設定します(ランタイムストアを使用).......その値はgetShowDialog()メソッドによって取得されます。そして
fieldChanged(Field field, int context) { }
Unlock / Cancelボタンの両方のメソッド...........を呼び出すことにより、ブール変数の値をfalseに設定します...
GlobalSingleton obj = null;
obj = GlobalSingleton.getInstance();
obj.setShowDialog(false);
しかし、正しいアプローチは、「タイマータスク」を再度開始しないことです........ユーザーがブロック解除/キャンセルボタンを押して、制御がfieldChanged(Field field, int context) { }
メソッドから出るまで。
ブール変数に基づいて、Timer オブジェクトに対する待機 - 通知操作を処理するために、differnet スレッドを使用する必要があります。私はすでにこのアプローチを試しました........しかし、解決策を得ることができません...
私はどんな提案にも感謝します....
よろしく。