Я пытаюсь прочитать данные с физического устройства. Для получения данных я использую asynctask, чтобы избежать блокировки пользовательского интерфейса. Когда я нажимаю кнопку, я должен сделать это дважды (для минимальных и максимальных значений): wait 5 секунд; получить данные за 1 секунду. Таким образом, код написан в OnClickListener кнопки. Для первой задачи я использую этот метод:Android asynctask для максимального времени
new android.os.CountDownTimer(5000, 1000) {
public void onTick(long millisUntilFinished) { }
public void onFinish() { }
}.start();
Для второго я использую AsyncTask и в методе doInBackground меня
while(booleanValueMax || booleanValueMin) {
//code
}
(booleanValueMax и booleanValueMin являются летучими булево). Теперь я ставлю эти два ложь с помощью таймера (за пределами AsyncTask):
Timer min = new Timer();
min.schedule(new TimerTask() {
@Override
public void run() {
booleanValueMin = false;
}
}, 1000);
(то же самое для макс)
Теперь я хотел бы использовать тот же AsyncTask для хранения максимального и минимального значения. Поэтому я знаю, какие данные я получаю, проверяя логические значения (в методе doInBackground).
if(booleanValueMax)
//store max
else
//store min
Проблема в том, что эти переменные всегда являются ложными. И я не знаю, почему.
Не есть ли другой путь для достижения своей цели, вместо того, чтобы использовать таймер, CountDownTimer, etc.?I»
сообщение ваши полные code.seems как простые тайминги вопрос –