0

Runnable を実装するクラスを含むアプリを入手しました。スレッドが開始され、run() メソッドがオーバーライドされる場所。これは私のグラフィックを実行します。

1.最初の質問: run() はどのくらいの頻度で呼び出されますか? 私はこれに時間を設定していないので、デフォルト値でなければなりませんか?

2. 2 番目の質問: 一定時間 (2 分、5 分、10 分) などの後に何かを実行したいのですが、これを行うための最良の方法は何でしょうか。int をカウンターとして使用することを考えていました。それは私が望むことをする特定の値に達します。

4

4 に答える 4

0

1.最初の質問:run()はどのくらいの頻度で呼び出されますか?私はこれのための時間を設定していないので、それはデフォルト値でなければなりませんか?

スレッド内のrun()メソッドは、たとえば呼び出すときに呼び出されます。yourThread.start();

2番目の質問:一定の時間(2分、5分、10分)などの後に何かを実行したい。これを実行するための最良の方法は何でしょうか。私はintをカウンターとして使用することを考えていました。特定の値に達すると、私が望むことを実行します。

オプションがあります。メソッドを呼び出すこともできますThread.sleep()(注:UIスレッドでこれを行わないでください)。

または、上記の方法で実行できます。したがって、あなたのrun()メソッドでは、while()ループがあり、lastUpdateとミリ秒単位の現在の時間の差が必要な期間よりも大きいかどうかをすべての反復でチェックします。2分、5分または10分。

これがお役に立てば幸いです。

于 2012-11-01T21:01:13.543 に答える
0

質問 2 について - ScheduledExecutorを使用する

于 2012-11-01T21:04:10.293 に答える
0

1.最初の質問: run() はどのくらいの頻度で呼び出されますか?

自分で調べることができます。これを Runnable の先頭に置きます。

Log.v("Running Runnable", System.currentTimeMillis() + ""); 

2. 2 番目の質問: 一定時間 (2 分、5 分、10 分) 後に作業を完了させたいなど。

HandlerThreadを拡張し(Looper を初期化します!)、クラス変数として Handler を追加し、Handler のpostDelayed()またはpostAtTime()メソッドを使用します。

于 2012-11-01T21:08:22.593 に答える
0

run() の呼び出し間の正確な時間は、プロセッサによって異なります。各呼び出し間の時間は、ナノ秒単位で実際に目に見えるものです。タイマーを作成しようとしている場合は、System.currentTimeMillis() を使用して run() メソッドで呼び出すことをお勧めします。差が 1000 ミリ秒以上になると、実際のタイマーは 1 減ります。これは秒を追跡し、分のベースとして使用し、特定の時間に他のイベントを生成することができます。

于 2012-11-01T21:32:30.767 に答える