2010-11-29 16 views
0

私は本質的にそれがNミリ秒間スリープ状態になるようにアプリのさまざまな場所で使用できるヘルパーメソッドを書く必要があります。Handler.postAtTimeはそれを行う方法の1つかもしれませんが、可能であれば、コードスニペット。Android 2.2:Nミリ秒間アプリをスリープ状態にするヘルパーメソッドを作成するにはどうすればよいですか?

+1

はです我々はすべて見ることを憎む恐ろしいダイアログが表示されるはずですNミリ秒間スリープ状態にする必要があるアプリケーションの主なスレッドですか?アプリをスリープ状態にするとどういう意味ですか? –

+2

アプリをスリープ状態にしないでください。特に、メインのUIスレッドはスリープ状態にしないでください。これはUIの描画に影響し、アプリを低迷させる可能性があります。 –

+0

私はSureshと一緒にいます - 私たちは助けが必要です。 Y msの遅延操作Xは簡単ですが、他のUI操作とバックグラウンド処理を正常に続行できます。 代わりに、N ms毎に何かをチェックしたり、何かをチェックしたりすることもできます。私たちはもっと知る必要があります。 私は下のSpencerに言ったように、あなたは人間のUIを本質的にフリーズし、ユーザーを苛立たせ、FCの警告を引き起こす可能性があるので、あなたのマインスレッドをスリープさせるべきではありません。 – Eddie

答えて

1

このようなものをお探しですか?

try { 
    //Put the thread to sleep for the desired amount of time (milliseconds) 
    Thread.currentThread().sleep(1000); 
} 
catch(InterruptedException ie){ 

} 

これにより、指定した時間、呼び出し元のスレッドがスリープ状態になります。

+2

私はこの方法に対して警告します。 Androidフレームワークは、いつでもUIスレッドをロックすることを強く推奨していません。これは基本的にコードが行っていることです。 – Eddie

+0

+1 Eddie。はい、メインのUIスレッドをsleep()するべきではありません。これは非常に悪いことです。 –

+0

プラス側では、これは動作します。マイナス面では、より良い方法があるように聞こえます。私に教えてください。 – charlest

5

なぜあなたはあなたのアプリが "スリープ"する必要があると言っていません。あなたはいくつかの時間後にタスクを実行する必要があると仮定すると、

Handler h = new Handler(); 
h.postDelayed(new Runnable() { 
    public void run() { 
     // do something here 
    } 
}, 1000); // 1000 ms delay 
+0

私はこれを行う必要がある理由は、画面にメッセージを表示し、それを60秒間表示してから別のメッセージを表示したいということです。私が完了するのを待っている60秒間は何も具体的なことはないので、AsyncTaskは適用されないようです。 – charlest

+0

asynctaskでスリープ(60000)していますか? –

+0

メッセージを投稿するたびに新しいハンドラを作成しないでください。ただし、これ以外の方法でも問題ありません。 – adamp

2

あなたがスレッドをブロックし気にしない場合は、のThread.sleep(の代わり))は(SystemClock.sleepです。

InterruptedExceptionを無視するので、それは1ライナーであるという利点があります。そのため、処理する必要はありません。

さらに詳しい情報はhttp://developer.android.com/reference/android/os/SystemClock.htmlです。

すでに述べたように、あなたはそれはあなたのアプリケーションが応答しなくなることになりますように、メインUIスレッド上でこれを呼び出す回避し、潜在的に(待つか、強制終了してください。)

関連する問題