100msごとに1000msの操作をしたいのですが。
私は私が使用する必要があると信じています
handler
それ、どうやったら出来るの?
Handler h = new Handler();
int count = 0;
int delay = 100;//milli seconds
long now = 0;
h.postDelayed(new Runnable(){
public void run(){
now = System.currentTimeMillis();
//do something
if(10>count++)
h.postAtTime(this, now + delay);
},
delay};
操作の実行には100ミリ秒未満かかる必要があることに注意してください。そうしないと、100ミリ秒ごとに実行できなくなります。これは、すべてのメソッドに当てはまります。
Timer t = new Timer();
int count = 0;
t.scheduleAtFixedRate(new TimerTask() {
count++;
// Do stuff
if (count >= 10)
t.cancel();
}, 0, 100);
TimerTask
これにより、0ミリ秒の遅延でを実行するタイマーがスケジュールされます。TimerTask
100ミリ秒ごとに本体を実行します。count
タスクのどこにいるかを追跡するために使用して、10回の反復の後、タイマーをキャンセルできます。
@ Jug6ernautが述べたように、タスクの実行に時間がかからないことを確認してください。長時間のタスク(この場合、100ミリ秒より長くかかるタスク)は、遅延/潜在的に望ましくない結果を引き起こします。
を使用してこれを行うことができますTimer
。
今はこれをテストする時間がありませんが、これは機能するはずです
これは1つの方法です。
このタイマーを作成します。
private Timer mTimer = new Timer();
このタイマーを開始するには:
mTimer.scheduleAtFixedRate(new MyTask(), 0, 100L);
タイマークラス:
/**
* Nested timer to call the task
*/
private class MyTask extends TimerTask {
@Override
public void run() {
try {
counter++;
//call your method that you want to do every 100ms
if (counter == 10) {
counter = 0;
//call method you wanted every 1000ms
}
Thread.sleep(100);
} catch (Throwable t) {
//handle this - maybe by starting it back up again
}
}
}