Я создал два класса, реализованных из runnable ().Затем я звоню им несколько раз, с разной задержкой.Проблема заключается в том, что когда я запускаю исполняемый файл позже, ему нужно знать значение переменной обратно при вызове postdelay, а не при его фактическом запуске.
Я думаю, что теперь мне нужно сделать, это передатьпеременная в работающий экземпляр, когда я вызываю почтовую задержку.Но я не могу понять, как это сделать.Вот исходный код для справки:
public void PlaySequence() throws InterruptedException{
for(int i = 0;i<level;i++){
mHandler.postDelayed(mToggleButtonOn, (i+1)*playbackOffTime);
mHandler.postDelayed(mToggleButtonOff, (i+1)*playbackOnTime);
currentProgIteration++;
}
currentProgIteration=0;
}
private Runnable mToggleButtonOn = new Runnable() {
public void run() {
try {
if(Sequence[currentProgIteration]==0){
ImageCard[0].setImageDrawable(getResources().getDrawable(R.drawable.yellow));
}
else if(Sequence[currentProgIteration]==1){
ImageCard[1].setImageDrawable(getResources().getDrawable(R.drawable.blue));
}
else if(Sequence[currentProgIteration]==2){
ImageCard[2].setImageDrawable(getResources().getDrawable(R.drawable.red));
}
else if(Sequence[currentProgIteration]==3){
ImageCard[3].setImageDrawable(getResources().getDrawable(R.drawable.green));
}
}
catch (IllegalStateException e) {
e.printStackTrace();
}
}
};
private Runnable mToggleButtonOff = new Runnable() {
public void run() {
Log.d("Info", "running Off currentProgIteration: "+currentProgIteration);
try {
if(Sequence[currentProgIteration]==0){
ImageCard[0].setImageDrawable(getResources().getDrawable(R.drawable.darkyellow));
}
else if(Sequence[currentProgIteration]==1){
ImageCard[1].setImageDrawable(getResources().getDrawable(R.drawable.darkblue));
}
else if(Sequence[currentProgIteration]==2){
ImageCard[2].setImageDrawable(getResources().getDrawable(R.drawable.darkred));
}
else if(Sequence[currentProgIteration]==3){
ImageCard[3].setImageDrawable(getResources().getDrawable(R.drawable.darkgreen));
}
}
catch (IllegalStateException e) {
e.printStackTrace();
}
}
};
Runnables используют глобальную переменную currentProgIteration, но к тому времени, когда они запускаются после задержки, эта переменная была установлена обратно в 0.
Спасибо за любой совет.