在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的事情,他们可以检测,如果不在主线程然后记录它,并在主线程后做这些事情。 –