나는 다소 혼란스러워합니다. 기본적으로 스레드를 생성하고 그 스레드에서 메시지 루프를 실행하려고합니다. 기본적으로 다음 작업을 수행하고 있습니다. Android Looper 클래스 API 문서에서 곧바로 확인할 수 있습니다. 그러나, 내 응용 프로그램은 항상 Looper.loop()에서 멈추고 그것을 결코 반환하지 않습니다. 이에 대한 현재의 해결 방법은 주 스레드 (또는 UI 스레드)에 처리기를 만들고 대신 해당 스레드에 메시지를 보내는 것입니다. 그러나 청결을 기하기 위해 제 응용 프로그램의 흐름을 이해하는 것이 중요합니다. 제가 만드는 스레드에 메시지를 보내고 싶습니다.Looper.Loop()이 멈추는 원인 (즉, 결코 돌아 가지 않음)
class LooperThread extends Thread {
public Handler mHandler;
public void run() {
Looper.prepare();
mHandler = new Handler() {
public void handleMessage(Message msg) {
// process incoming messages here
}
};
Looper.loop();
// The rest of the code below is a control loop
}
}
Looper.loop()이 절대로 돌아 오지 않을 수도있는 것에 대한 생각은 무엇입니까?
작동 할 수 중지합니다. 들어오는 메시지를 수신하고 처리기를 통해 처리하는 스레드를 만듭니다. 스레드 실행이 중지되면 스레드는 더 이상 들어오는 메시지를 처리 할 수 없습니다. –
나는 이것을 이해할 것 같다. –
그건 그렇고, 미리 준비된 것이 필요한 경우 IntentService 클래스를 확인하십시오. 내장 순차 메시지 처리 루프가 있으며 자체 작업자 스레드로 구현됩니다. –