안녕하세요 초보 개발자 입니다.
제가 타이머 관련 기능을 코딩하면서 activity에 처음 코딩을 하게 되었는데요, 타이머 시작 후 어플 종료시 타이머도 같이 종료되길래 알아본 결과 service<~>active 관계와 message, handler, bindservice 내용을 알게 되었고 공부하고 있습니다. 현재 여러 예제들을 공부하고 있는데요 궁금한점 때문에 질문 드립니다.
Main activity
if (mServiceConnected) {
try {
Message msg = Message.obtain(null,
BoundService.MSG_GET_TIMESTAMP, 0, 0);
msg.replyTo = mActivityMessenger;
mBoundServiceMessenger.send(msg);
Toast.makeText(MainActivity.this , Integer.toString(msg.what), Toast.LENGTH_SHORT).show();
} catch (RemoteException e) {
e.printStackTrace();
}
}
private final Messenger mActivityMessenger = new Messenger(
new ActivityHandler(this));
static class ActivityHandler extends Handler {
private final WeakReference<MainActivity> mActivity;
public ActivityHandler(MainActivity activity) {
mActivity = new WeakReference<MainActivity>(activity);
}
//@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case BoundService.MSG_GET_TIMESTAMP: {
mActivity.get().mTimestampText.setText(msg.getData().getString(
"timestamp"));
}
}
}
}
1. 코딩중 일부 입니다. 위 코딩 에서 Message obtain을 통해 msg.what값을 받고
mBoundServiceMessenger.send(msg)를 통해 service에 값을 보내게 되는데요.
msg.replyTo 의 사용 목적이 궁금합니다.
제 예상으로는 .send를 이용해서 service로 message를 전달한 후
service의 handler 를 통해 다시 dataMessage를 activity로 받기 위해 msg.replyTo를 사용하는거 같습니다.
만약 service의 message를 받는거라면 .send(msg) 다음에 msg.replyTo가 위치해야 하는것 같은데요 답변좀 부탁 드립니다.
2. service class에서 sendEmptyMessageDelayed(0,1000)와 count++를 이용하여 1초당 카운트증가하게끔 타이머를 만들예정인데요 혹시 관련 예제나 정보 있으시면 간략하게 아이디어 부탁드립니다.
1번이 메인 질문이구요 혹시 2번도 좋은 정보 있으시면 답변 부탁 드려요~ 감사합니다.