2010-06-18 3 views
1

У меня есть поток, запущенный в моей программе Когда Mouse-down Event генерирует, я хочу поместить этот поток в ожидании() и в Mouse-up Я хочу сообщить об этом потокеКак поместить тему в Wait в Android

Но когда я пытался это сделать, он дает мне ошибку, как «Объект, не заблокированный нитью», поэтому кто-нибудь может мне помочь, как решить эту проблему.

+2

ли вы положили синхронизации-объект в синхронизированный блок? –

ответ

0

Насколько я знаю, вызов wait() в цепочке вызывает crash ... я не знаю, есть ли безопасный способ приостановить поток (или, по крайней мере, простой способ)

2

Вы не можете остановить поток пользовательского интерфейса (это тема, которая называется событием). Эта тема используется для отправки событий пользовательского интерфейса, и если вы можете сделать это wait(), это сделает ваш пользовательский интерфейс невосприимчивым.

Вам придётся создать свою собственную тему.

3

Просто используйте Thread.sleep(), а затем Thread.interrupt(), чтобы разбудить его.

что-то вроде этого:

Thread t; 

startThread() { 
    t = new Thread() { 
    public void run() { 
     doThings(); 
     sleep(10000); 
    } 
    } 

    t.start(); 
} 

interruptThread() { 
    if (t != null) t.interrupt(); 
}