【发布时间】:2012-10-18 22:27:36
【问题描述】:
我正在安排一个应该在 4 秒内更新文本字段的简单任务。
但是,每次调用此活动时,活动都会暂停,并且在我重新启动活动之前不会在文本字段中显示值。
private void showDelayedValue() {
Runnable longRunningTask = new Runnable() {
public void run() {
int randomVal = randomNumberGenerator.nextInt(30 - -10) - 10; //random number between -10 and 30
String randomValStr = Integer.toString(randomVal);
Log.i(this.getClass().getSimpleName(),
"FIRED startScheduler: " + randomValStr);
theFieldOnScreenTV.setText(randomTempStr);
}
};
//show the value in 2 seconds
scheduledTaskExecutor.schedule(longRunningTask, 4, TimeUnit.SECONDS);
}
日志显示:
FIRED startScheduler: 4
但不更新TextView theFieldOnScreenTV
而是在 Fired startScheduler: 显示在 LogCat 之后立即调用 onPause。
非常感谢!
编辑:
按照 Alex 的方法,这对我有用:
private void showDelayedValue() {
int randomX = randomNumberGenerator.nextInt(30 - -10) - 10;
final String randomXStr = Integer.toString(randomX);
final Runnable updateFieldR = new Runnable() {
public void run() {
theFieldOnScreenTV.setText(randomXStr);
}
};
Runnable longRunningTask = new Runnable() {
public void run() {
theFieldOnScreenTV.post(updateFieldR);
}
};
scheduledTaskExecutor.schedule(longRunningTask, 4, TimeUnit.SECONDS);
}
【问题讨论】:
-
尝试调用 theFieldOnScreenTV.invalidate();在 setText();. 之后
-
我做了,但没有帮助,谢谢!
标签: android scheduled-tasks task