2012-01-27 5 views
2

ボタンをクリックして、5分のタイマーを開始して、特定の条件をチェックし、条件が正しい場合にアラートを設定する方法を実行します。私はタイマーとpostDelayの例を見てきましたが、なぜ1つのものか別のものかを使用する理由を実際に理解していません。私がしようとしていることを達成する最良の方法は何ですか?私は5分間にUIをロックしたくありません。ユーザーは、カウントダウン中は通常どおりアプリを自由に使用する必要があります。Androidの時間Xのコードの実行を遅らせる方法

編集:私はpostDelayedの提案を試みていますが、ビジュアルスタジオは自分のコードについて何か好きではありません。私が見つけた例のように見えます。私はアンドロイドのモノです。

Handler h = new Handler(); 
Runnable r = new Runnable(){ 
     public void run() 
      { 
       Dialog d = inst2.showBuilder(this, "test", "test"); 
       d.Show(); 
      } 
     }; 
h.postDelayed(r, 5000); 

具体ランの内のコードブロックは、「}予想」のすべての種類をスローし、例外「名前空間は、直接そのようなフィールドまたはメソッドとしての部材を含むことができません」。

答えて

4

は、タイマーオブジェクトを使用してみてください:

Timer mTimer = new Timer(); 
    mTimer.schedule(new TimerTask() 
    { 
     @Override 
     public void run() 
     { 
      // Your code goes here 
     } 
    }, 1000); // 1sec 

final Handler handler = new Handler(); 

    Timer timer = new Timer(); 
    timer.schedule(new TimerTask() 
    { 
     @Override 
     public void run() 
     { 
      handler.post(new Runnable() 
      { 
       public void run() 
       { 
        // YOUR Code 
       } 
      }); 
     } 
    }, 1000); // 1sec 
+0

これは、[OK]を動作するようです。アプリがタイマーを呼び出す以外のコンテキストにある場合、アラートダイアログを表示する方法を今すぐ把握する必要があります。しかしそれは別の質問です。ありがとう! – jmease

+0

@jmease編集をご覧ください – ChristopheCVB

0

単純なThreadをバックグラウンドで5分間スリープしてから、関数を呼び出すことができます。スレッドがバックグラウンドでスリープしている間、UIはフリーズしません。あなたが望むものを実行してスレッドが終了すると、いくつかのインテントを通知として送信して、いくつかのBroadcast Receiversで受け取ることができます。 これが役に立ちますようにお願いします。

0

Handler.postDelayed(Runnableブロック)を使用してください。タイマーを使用することをお勧めしませんアンドロイドとして、遅延を実行する方法。

0
Handler h = new Handler(); 
Action myAction =() => 
{ 
    // your code that you want to delay here 
}; 

h.PostDelayed(myAction, 1000); 
関連する問題