我编写了以下代码,基本上是从一个线程开始,在该线程中更改TextView的文本。
我原本预期会出现错误,因为我从另一个线程而不是主线程访问TextTiew(UI元素)。
但是它正常工作。据我所知,这不应该是可能的。
我不明白,我错过了什么?
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.view1);
tv.setText(Thread.currentThread().getName());
Thread theThread = new Thread(new aRunnable(tv));
theThread.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.activity_main, menu);
return true;
}
}
public class ARunnable implements Runnable{
TextView tv;
public ARunnable(TextView tv){
this.tv = tv;
}
@Override
public void run() {
tv.setText(tv.getText()+"----" + Thread.currentThread().getName());
}
}
aThread
确实是ARunnable
? - njzk2