Android-документ говорит о runOnUiThread: «Если текущий поток не является потоком пользовательского интерфейса, действие публикуется в очередь событий потока пользовательского интерфейса.»
У меня вопрос: будут ли разные действия использовать одну и ту же очередь событий или каждая активность имеет свою очередь?
Предположим, что действие A запускает поток, чтобы что-то сделать, и, наконец, обновляет пользовательский интерфейс с помощью runOnUiThread, но в то же время запускает действие B, как показано ниже:
public class HelloAndroid extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Thread myThread = new MyThread();
myThread.start();
Intent intent = new Intent(this, B.class);
startActivity(intent);
}
private class MyThread extends Thread {
public void run() {
/* Do somthing expensive */
......
/* Update UI */
HellowAndroid.this.runOnUiThread(new Runnable() {
@Override
public void run() {
/* Do UI update for activity A */;
}
});
}
}
}
Что если, когда поток выполняет код "HellowAndroid.this.runOnUiThread (new Runnable ...)", видимая активность уже B, а стек в настоящее время A B, с B вверху. Будет ли выполняться код «HellowAndroid.this.runOnUiThread (new Runnable ...)» для обновления действия A? Что случится? Будет ли обновляться пользовательский интерфейс операции А в этом случае?
Спасибо.