【发布时间】:2016-04-27 04:31:06
【问题描述】:
在 android 中,如果我想在非 ui 线程中修改某些视图的属性(例如 TextView 的 setText),我必须编写如下代码:
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 的代码应推送到该线程,否则会出现并发问题
-
我同意。但是为什么框架不帮我们做这些额外的事情,他们可以检测到如果不在主线程中然后记录下来,然后在主线程中做这些事情。
标签: android multithreading uiview frameworks