0
我在說一個線程。例如,我在它的活動UI和下面的方法:可以通過主事件循環中斷代碼執行嗎?
/* TOP LEVEL OF EXECUTION LOOPER NOW WORKING */
class MyActivity extends Activity {
void onCreate(Bundle instance) {
super.onCreate(instance);
setContentView(R.layout.activity_main);
doComplicatedStuff();
}
void doComplicatedStuff() {
// Doing stuf
}
void onClick() {
// Process event
}
void anyOtherMethod() {
/* NOT TOP LEVEL OF EXEUCTION, LOOPER NOW CAN'T WORK */
}
}
/* TOP LEVEL OF EXECUTION, LOOPER NOW WORKING */
所以我的問題是,可以doComplicatedStuff()被打斷的onClick()處理(當然這時,我們有一個點擊的按鈕)的執行?
現在我認爲比onClick()處理程序不能中斷doComplicatedStuff()執行,直到doComplicatedStuff()結束其工作。因爲在代碼執行的頂層,我們有一個Looper,它接受下一個消息事件並將其分派給Handler(處理程序,然後調用onClick()方法)。換句話說,只有在這個線程中沒有任何執行方法的時候,Looper纔會執行你的工作。
非常感謝! 昨天我問了一個問題。這個問題是關於runOnUiThread,所以我想這個答案在它的問題(http://stackoverflow.com/questions/17489551/multiple-asynctasks-onpostexecute-order)是不正確的? –
他的回答是正確的,我的回答也是正確的。這兩個地址分開的問題。我的假設只有一個線程正在運行。他不這樣做,所以任務可以異步執行。但是,一次只有一個任務會更新GUI。當一個項目在GUI上工作時,如果你願意,這個項目可能會中斷一些其他的異步工作。但是,其他任務可能處於任何狀態。甚至可能已經完成。我不會建議這種方法。 –