Message Handler 구현 예제 (Looper 활용)
03 Aug 2018 | AndroidMessage Handler 구현 예제
Thread를 상속받아 구현했으며, Thread 내부에서 Handler를 생성하기 위해서 Looper를 이용한 예제입니다.
MessageHandler.java
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
public abstract class MessageHandler extends Thread {
Handler mHandler;
@Override
public void init() {
this.start();
}
@Override
public void fin() {
this.interrupt();
}
@Override
public void run() {
Looper.prepare();
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
handle(msg);
}
};
Looper.loop();
}
public abstract void handle(Message msg);
public synchronized void sendMessage(Message msg) {
mHandler.sendMessage(msg);
}
}
사용 방법
추상 클래스이기 때문에 상속받아서 구체화된 클래스를 만들어 사용하면 됩니다. 사용 예제는 다음과 같습니다.
public class SampleComponent {
public o() {
messageHandler = new MessageHandler() {
@Override
public void handle(Message msg) {
handleMessage(msg);
}
};
}
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE.DEBUG_ON:
// TODO
break;
case MESSAGE.DEBUG_OFF:
// TODO
break;
}
}
}