在Android中,如果我想在非UI線程(如的setText爲TextView的)來修改一些視圖的屬性,我必須寫代碼這樣的:爲什麼non-ui線程無法修改視圖屬性?
runOnUiThread(new Runnable(){
textView.setText("Hello world");
});
而在C#中,我必須使用委託,這更復雜。
那麼爲什麼他們(框架)不幫我們在內部代碼中做這些事情?
void setText(string text){
if(isInMainThread()){
//direct set text
}else{
post(new Runnable(){
setText(text);
});
}
}
是否有任何理由類同Java線程停止方法不推薦使用,因爲流量必須通過編碼器來控制嗎?
在此先感謝,並原諒我可憐的英語。
所有與UI繪圖相關的工作都在1個線程中完成,因此改變UI的代碼應該被推送到這個線程,否則會出現併發問題 – Bhargav
我同意。但是,爲什麼框架不能幫助我們做這些exra的事情,他們可以檢測,如果不在主線程然後記錄它,並在主線程後做這些事情。 –