我正在制作概念证明示例,我尝试了下面的代码。我应该看到在不同的Thread中处理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");
}
}
}
答案 0 :(得分:0)
我找到了问题。
线程花费的时间非常少,而且它在onCreate()
方法中。它甚至在UI出现在屏幕上之前就完成了。如果我将此代码移动到onResume()
(在UI变为可见之后)或者通过一些sleep()调用需要很长时间,它会按预期崩溃。