我面临一个奇怪的问题,我无法理解为什么。
案例1:
Runnable mGen = new Runnable() {
@Override
public void run() {
try {
//Randomly generate variable i (0 or 1 in this example case)
imageView[i].setImageResource(R.drawable.firstimage);
try {
Thread.currentThread().sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
} finally {
imageView[i].setImageResource(R.drawable.secondimage);
mHandler.postDelayed(mGen, 500);
}
}
};
void startRepeatingTask() {
mHandler.postDelayed(mRandomGen,500);
}
void stopRepeatingTask() {
mHandler.removeCallbacks(mGen);
}
在这种情况下,我没有明显看到imageView图像资源被设置为 firstimage 。
但如果我这样做,
案例2:
Runnable mGen = new Runnable() {
@Override
public void run() {
try {
if(prevI!=-1)//Don't perform this first time
imageView[prevI].setImageResource(R.drawable.secondimage);
//Randomly generate variable i (0 or 1 in this example case)
imageView[i].setImageResource(R.drawable.firstimage);
try {
Thread.currentThread().sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
} finally {
prevI = i;
mHandler.postDelayed(mGen, 500);
}
}
};
void startRepeatingTask() {
mHandler.postDelayed(mRandomGen,500);
}
void stopRepeatingTask() {
mHandler.removeCallbacks(mGen);
}
我可以看到两个图像都按预期设置为imageViews。
基本上,我生成一个随机数(0或1,为简单起见),并将imageView设置为某个图像(第一图像),然后返回原始图像(secondimage),并在每个固定间隔重复此操作。 / p>
在第一种情况下,我在线程的同一次运行中进行设置和重置,而在第二种情况下,我在当前运行中重置上一次运行。
案例1 中我的代码有什么问题?如何纠正它?