2

Handlersアクティビティに複数あります。onCreate()メイン アクティビティのすべてのハンドラを作成します。私の理解では、handleMessage()すべてのメッセージが同じキュー (アクティビティ スレッド MessageQueue) に入れられるため、各ハンドラーのメソッドが同時に呼び出されることはありません。したがって、それらはキューに入れられた順序で実行されます。また、メイン アクティビティ スレッドでも実行されます。これは正しいです ?

 public void onCreate() {

this.handler1 = new Handler() {
@Override
public void handleMessage(Message msg) {

                            //operation 1 : some operation with instanceVariable1
super.handleMessage(msg);
}
};

this.handler2 = new Handler() {

@Override
public void handleMessage(Message msg) {
                            //Operation 2: some operation with instanceVariable1
super.handleMessage(msg);
}

};

this.handler3 = new Handler() {
@Override
public void handleMessage(Message msg) {
                            //Operation 3: some operation with instanceVariable1
super.handleMessage(msg);

}
};
}
4

2 に答える 2

2

ドキュメントから「新しいハンドラーを作成すると、それを作成しているスレッドのスレッド/メッセージキューにバインドされます-その時点から、メッセージとランナブルをそのメッセージキューに配信し、それらが来ると実行しますメッセージキューから出ました。」

そうです、UI スレッドでキューに入れられた順序で実行されます (onCreate で作成するため)。

于 2010-05-13T19:41:52.090 に答える