2017-04-03 26 views
0

我的代碼是像下面是否使用Handler.postDelayed計劃runnable等到當前可運行結束?

mNonUIHandler.post(runnable1); 
mNonUIHandler.postDelayed(runnable2, 20*1000); 

假設runnable1需要30秒才能完成。 runnable2是否會在runnable1結束之前(現在+30秒)運行,直到runnable1結束或運行時(現在+20秒)?

+0

都不是。您的應用程序將因應用程序無響應錯誤而崩潰,因爲您正在佔用主應用程序線程太長時間。 – CommonsWare

+0

我更新了我的帖子,指出Handler是非UI處理程序。 – Kai

回答

0

您將它發佈到的處理程序運行在它創建的線程上。線程一次只能做一件事。所以是的,它會等到第一個(和事件隊列中的其他事件)完成之後再運行新的事件。如果您需要立即運行它,則需要創建一個新的線程而不是發佈消息。

相關問題