我試圖通過使用scheduleatfixedrate來調整時間序列。 但是,當我創建這個代碼塊時,我不知道在除非定時器被清除之後,不能改變它被執行後的時間段。調整TimerTask間隔
這是我在一個有序的一系列事件的嘗試:
@Override
protected void onStart()
{
super.onStart();
Timer timer = new Timer();
GregorianCalendar gCal = (GregorianCalendar) GregorianCalendar.getInstance();
final Runnable countDivision = new Runnable()
{
public void run()
{
/**
* Starts the sequence and wraps around when reached the last position
*/
if(playSequenceButton.isChecked())
{
setEnabled(true);
int length = sequencer.getLength();
int i = sequencer.getPosition();
DIODE[i].setChecked(true);
if(i > 0)
DIODE[i-1].setChecked(false);
if (i < 1)
DIODE[length].setChecked(false);
}
/**
* Stops and resets the sequence
*/
else
{
for (int i = 0; i < sequencer.getLength(); i++)
DIODE[i].setChecked(false);
sequencer.setPosition(START_POSITION);
setEnabled(false);
}
}
};
int millis = 999 - gCal.get(GregorianCalendar.MILLISECOND);
int inputBPM = TEMPO;
long qtrN=Math.round(((60000/inputBPM))*100000)/100000;
long sixteenN = (qtrN/4);
sixteenN=Math.round(sixteenN*100000)/100000;
timer.scheduleAtFixedRate(new TimerTask()
{
@Override
public void run()
{
// setEnabled(true);
runOnUiThread(countDivision);
}
}, 0, sixteenN);
}
你會推薦設置可動態改變一段時間的什麼方法? 在runnable countDivision正在運行時,16N變量需要能夠改變。 也許一個timertask不是正確的工具?
問候 /M
每次都使用一個新的定時器。或者使用一個非常明顯的報警管理器 – njzk2
我甚至都沒有看到它。謝謝!但是,這會導致事件以兩個不同的間隔運行。我想我需要取消以前的計時器,但這給了我一個nullpointerexception。 – hacke