我曾认为视图只能从主线程操纵...但是,为什么以下操作不会崩溃:
public class MainActivity extends Activity {
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tv = new TextView(this);
tv.setText("original text");
setContentView(tv);
new Thread(new Runnable() {
@Override
public void run() {
tv.setText("trollollolol i should die here but i won't.");
}
}).start();
}
}
我在设备和模拟器上都运行了代码,两者都能正常工作并且我看到文本发生了改变。出了什么问题?
我还检查了线程ID,后台线程绝对不是主线程(threadID = 1)。
Thread.sleep(1000);
,在更新文本视图之前。应用程序将崩溃并抛出预期的CalledFromWrongThreadException
异常。 - user656588