1
在Android中,我認爲我不能從UI線程以外的其他線程訪問UI對象。這就是爲什麼處理程序和所有那裏溝通細節回到UI線程。我可以從UI線程以外的其他線程訪問android widget引用嗎?
我試過下面的簡單例子。我試圖從創建的新線程更新進度欄。有效。我以爲我會得到例外。你能解釋一下爲什麼我沒有得到例外。
public class Main3Activity extends AppCompatActivity {
private static final String TAG = "Main3Activity";
Thread thread;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
thread = new Thread(new MyThread());
progressBar = (ProgressBar) findViewById(R.id.progressBar);
Log.i(TAG, "run: "+Thread.currentThread().getName());
thread.start();
}
class MyThread implements Runnable{
@Override
public void run() {
Log.i(TAG, "run: "+Thread.currentThread().getName());
for(int i=0; i<100; i++){
progressBar.setProgress(i);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
謝謝。這說得通。 – Manoj
很好的問題很多人對此有懷疑。 –