@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextView = (TextView) findViewById(R.id.text);
new Thread(new Runnable() {
@Override
public void run() {
mTextView.setText("Hello");
}
}).start();
但是,如果我为线程添加延迟它不起作用。所以我可以从非UI线程操纵UI元素。任何人都可以为我澄清这种情况吗? }
答案 0 :(得分:3)
Android实际上并没有阻止您从主线程外部更新UI。这只是一个滴答作响的定时炸弹。如果主UI线程当时没有更新UI,那么你的线程就可以做到。没有办法控制它何时会发生在SurfaceView
之外。
至少那是我的理解。我不是100%肯定知道,但我已经(不小心)从主UI线程之外更新UI。有时它会起作用,有时也不行,所以我认为它是某种形式的ConcurrentModificationException。
答案 1 :(得分:1)
不,如果您正在操作UI元素,则必须从主线程执行此操作。