如何延迟runnables(更改背景颜色)但是能够在从Activity调用terminate()后立即终止处理程序?
public void handleBackgroundChange() {
while(i != -1) {
if(method.equals(context.getResources().getString(R.string.RGB_and_White))) {
mHandler.post(r1);
} else if (method.equals(context.getResources().getString(R.string.Black_and_White))) {
mHandler.post(r2);
} else if (method.equals(context.getResources().getString(R.string.White))) {
mView.setBackgroundResource(colors.get(3));
}
SystemClock.sleep(duration.longValue());
}
}
@Override
public void run() {
handleBackgroundChange();
}
public void terminate() {
i = -1;
}
Runnable r1 = new Runnable() {
@Override
public void run() {
if (i != -1) {
mView.setBackgroundResource(colors.get(i));
i++;
if (i == 4) {
i = 0;
}
}
}
};
Runnable r2 = new Runnable() {
@Override
public void run() {
if (i != -1) {
mView.setBackgroundResource(bw.get(i));
i++;
if (i == 2) {
i = 0;
}
}
}
};
背景信息:我目前正在修复几个月前制作的应用程序(屏幕老化修复程序)。下面的代码工作正常,但处理程序需要很长时间才能终止,特别是当持续时间很长时。我知道导致它的原因(SystemClock.sleep(...))必须在while循环再次检查之前完成,但我不知道如何解决这个问题。