【发布时间】:2015-01-14 12:08:29
【问题描述】:
我正在尝试从物理设备读取数据。 为了获取数据,我使用 asynctask 来避免 UI 阻塞。 当我点击一个按钮时,我应该做两次(对于最小值和最大值): 等待 5 秒; 采集数据 1 秒。 所以代码写在按钮的OnClickListener中。 对于第一个任务,我使用这种方法:
new android.os.CountDownTimer(5000, 1000) {
public void onTick(long millisUntilFinished) { }
public void onFinish() { }
}.start();
第二次我使用的是 asynctask 并且在它的 doInBackground 方法中我有
while(booleanValueMax || booleanValueMin) {
//code
}
(booleanValueMax 和 booleanValueMin 是可变布尔值)。现在我使用 Timer(在 asynctask 之外)将这两个设置为 false:
Timer min = new Timer();
min.schedule(new TimerTask() {
@Override
public void run() {
booleanValueMin = false;
}
}, 1000);
(最大值相同)
现在我想使用相同的 asynctask 来存储最大值和最小值。所以我知道我正在获取哪些数据来检查布尔值(在 doInBackground 方法中)。
if(booleanValueMax)
//store max
else
//store min
问题是这些变量总是假的。我不知道为什么。
除了使用 Timer、CountDownTimer 等之外,没有其他方法可以实现我的目标吗?我'
【问题讨论】:
-
发布您的完整代码。似乎是简单的计时问题
标签: java android android-asynctask boolean