LINUX.ORG.RU

[java] Выполнить, подождать, выполнить

 


0

0

public static void waiting (int n){
long t0, t1;
t0 = System.currentTimeMillis();
do{
t1 = System.currentTimeMillis();
}
while (t1 - t0 < n);
}
...
one1.setVisibility(View.INVISIBLE);
waiting(1000);
one1.setVisibility(View.VISIBLE);

Предполагалось, что сначала выполниться one1.setVisibility(View.INVISIBLE), а через 1000мс one1.setVisibility(View.VISIBLE). Не работает. ЧЯДНТ?


>Предполагалось, что сначала выполниться one1.setVisibility(View.INVISIBLE), а через 1000мс one1.setVisibility(View.VISIBLE). Не работает. ЧЯДНТ?

JRE слишком умна чтобы лезть в метод waiting() который ничего не делает. А ты как думал?

Karapuz ★★★★★
()

Что то все равно не работает:

int rnd = (int)(5 * Math.random());

if (rnd == 1){
ImageButton one1 = (ImageButton)findViewById(R.id.one1);
one1.setVisibility(View.INVISIBLE);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
one1.setVisibility(View.VISIBLE);
}
else if (rnd == 2){

Ну то есть пауза есть, но похоже что one1.setVisibility(View.VISIBLE) выполняется сразу после one1.setVisibility(View.INVISIBLE), а потом уже выполняется пауза.

tr0ll
() автор топика
Ответ на: комментарий от tr0ll

так не бывает ©

Можно конечно еще погрешить на оптимизатор или свинговую "многопоточность".

wfrr ★★☆
()

one1.setVisibility(View.INVISIBLE);
Thread.currentThread().sleep(1000);
one1.setVisibility(View.VISIBLE);

iZEN ★★★★★
()
Ответ на: комментарий от Elverion

>...Наверное жабомашина баганутая

Фантазёр.

Скорее всего, он это делает из гуёвого потока. Соответственно, пока он не вернётся из обработчика, гуй обновлён и не будет.

Читать http://java.sun.com/products/jfc/tsc/articles/timer/

WFrag ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.