问题描述
我正在制作概念验证示例,并尝试了以下代码。 我应该看到在不同线程内处理UI元素的异常,但是代码可以正常工作!
public class MainActivity extends Activity {
TextView tv1 ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv1 = (TextView) findViewById(R.id.txt1);
new Thread(new Runnable() {
@Override
public void run() {
tv1.setText("I'm inside differnt thread");
}
}).start();
// This also works !
// TestingThread t = new TestingThread();
// t.start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
class TestingThread extends Thread{
@Override
public void run() {
super.run();
//simulate download
for (int i = 0; i < 1000000; i++) {
}
tv1.setText("I'm inside differnt thread");
}
}
}
1楼
我有点发现问题了。
该线程占用的时间非常少,它位于onCreate()
方法内部。
它甚至在UI出现在屏幕上之前完成。
如果我将此代码移动到onResume()
(在显示UI之后),或者通过某些sleep()调用花费了很长时间,则它会崩溃。