你好,這不是我的主要代碼,但它足夠接近顯示我的問題。Android Java處理程序,線程同步塊(notifyall&Wait)
我需要創建UI延遲(兩次) - 一個在另一個之後 我無法單獨使用handler.postDelay。
所以我已經嘗試使它與線程。
我想要做的是讓t2僅在t1結束後啓動。
任何人都可以幫我嗎?
final Handler handler1 = new Handler();
final Handler handler2 = new Handler();
synchronized(this)
{
Thread t1= new Thread(new Runnable() {
public void run()
{
handler1.postDelayed(new Runnable() {
@Override
public void run() {
// Do something after 3s = 3000ms
imgB1.setBackgroundColor(Color.RED);
notifyAll();
}
}, 3000);
}
});
Thread t2= new Thread(new Runnable() {
public void run()
{
handler2.postDelayed(new Runnable() {
@Override
public void run() {
// Do something after 3s = 3000ms
imgB1.setBackgroundColor(Color.YELLOW);
}
}, 3000);
}
});
t1.start();
while (t1.isAlive() )
{
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
t2.start();
}
不要使用線程和像這樣的同步。你似乎也阻止了主要的UI線程。 'postDelayed()'應該適用於像這樣的用例,而不涉及線程。 – laalto 2014-10-04 13:10:21
我不能只使用postDelay,因爲我真的需要一個標誌檢查第一個延遲結束。請不要告訴我將第二個帖子的延遲設置得更大會引起更多問題。那麼我怎麼能用一面旗子呢? – 2014-10-04 13:26:53
如果可運行引擎相互依賴,則在處理第一個即可運行的本文後,發佈另一個運行引擎。 – laalto 2014-10-04 13:29:52