메인 (UI) 스레드는 MessageQueue를 갖기 위해 스레드에 암시 적 루퍼가 첨부되어 있습니다.Android MessageQueue
그리고 우리는 또한 우리가 Looper.prepare()의 도움으로 작업자 스레드에 MessageQueue가 첨부 수 있다는 사실을 알고
내 질문은 그게은 동일 모두 대기열입니다?
메인 (UI) 스레드는 MessageQueue를 갖기 위해 스레드에 암시 적 루퍼가 첨부되어 있습니다.Android MessageQueue
그리고 우리는 또한 우리가 Looper.prepare()의 도움으로 작업자 스레드에 MessageQueue가 첨부 수 있다는 사실을 알고
내 질문은 그게은 동일 모두 대기열입니다?
새 스레드에서 Looper.loop()
을 호출하면 MessageQueue
이 아니므로 새로운 MessageQueue
이 새로 만든 스레드에 연결됩니다. 그런 다음 우리는 보통 스레드와 통신하기 위해 Handler
을 사용합니다. 메인 UI 스레드의 MessageQueue
은 앱 시작시 시스템에 의해 생성됩니다. 참조를 통해 메시지 대기열을 비교할 수 있습니다.
private static final String TAG = MainActivity.class.getSimpleName();
private Handler mHandler;
private MessageQueue messageQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
messageQueue = Looper.myQueue();
new Thread() {
@Override
public void run() {
super.run();
Looper.prepare();
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (Looper.myQueue().equals(messageQueue)) {
Log.d(TAG, "same message queue");
} else {
Log.d(TAG, "not the same queue");
}
}
};
mHandler.sendEmptyMessage(0);
Looper.loop();
}
}.start();
}
Here과 관련된 토론입니다.
감사합니다 @alijandro –
동일? 너 무슨 뜻이야? 그들의 참고 문헌을 비교 했습니까? – pskink
@pskink 나는 hasCode()에 대해 걱정하지 않는다 ... 우리는 왜 우리가 MessageQueue를 가지고 있는지 안다 ... 파이프 라인에서 UI를 렌더링한다 ... 하나의 스레드 (UI 스레드)가이 작업을 수행 할 책임이있다. MessageQueue를 갖는 하나 이상의 스레드를 가지고 있다면 렌더링을위한 파이프 라인 개념은 무엇인지 ... 내 관심사는 모두 동일해야합니다. –
죄송합니다. 전혀 이해하지 못하겠습니까? – pskink