안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.^^ 회색님
한 동안 다른 업무 진행으로 손을 놓았다가
다시금 시간을 내어서 Android를 보고 있습니다.
이해도 안 되고 넘 어려워서 이렇게 글을 올립니다.
1) Timer관련해서 보고 있는데요,
Handler에 대한 개념이 잡히지를 않습니다.
Thread 별 MessageQueue가 존재를 하는 걸로 이해를 했는데,
Looper라는 것의 역할(?)이 이해가 안 가네요.
Handler 관련 API를 보다가 꼬리를 물고 계속 따라 들어갔더니 더 헷갈리네요.
2) Service 관련입니다
Service에서 onStart()는 이해가 되는데요,
onBind()는 이해가 안 됩니다.
onStart()로 service를 시작할 수 있는데, onBind()는 어디에 쓰는지요??
service를 background thread로 보내어서 사용하기 위해서 사용하는 건가요???
좋은 정보 부탁드릴께요.
따뜻한 하루 되세요.^^
한 동안 다른 업무 진행으로 손을 놓았다가
다시금 시간을 내어서 Android를 보고 있습니다.
이해도 안 되고 넘 어려워서 이렇게 글을 올립니다.
1) Timer관련해서 보고 있는데요,
Handler에 대한 개념이 잡히지를 않습니다.
Thread 별 MessageQueue가 존재를 하는 걸로 이해를 했는데,
Looper라는 것의 역할(?)이 이해가 안 가네요.
Handler 관련 API를 보다가 꼬리를 물고 계속 따라 들어갔더니 더 헷갈리네요.
2) Service 관련입니다
Service에서 onStart()는 이해가 되는데요,
onBind()는 이해가 안 됩니다.
onStart()로 service를 시작할 수 있는데, onBind()는 어디에 쓰는지요??
service를 background thread로 보내어서 사용하기 위해서 사용하는 건가요???
좋은 정보 부탁드릴께요.
따뜻한 하루 되세요.^^
메시지를 처리하는 코드를 작성하지 않고 루프만 돌고 있으면 무의미하겠지요. 그래서 어떤 메시지가 왔을때 특정 동작을 하는 코드를 넣는 부분이 바로 Handler입니다.
그런데 Message를 정의하고 해당 메시지에 동작할 코드를 넣는 것이 아니라 간단하게 Runnable을 Handler에 전달하여 해당 쓰레드에서 전달된 Runnable을 처리하게 할 수 있습니다. Message를 직접 정의해서 사용할일 보다는 간단하게 Runnable을 보내 처리하는 경우가 훨씬 많습니다. 보통 UI 관련 함수는 메인 쓰레드(UI 쓰레드)에서 호출해야 정상작동하는데 이런 경우에 많이 쓰입니다.
2) Service에는 두가지 라이프사이클이 있을수 있는데 하나가 onStart와 onStop이고 하나가 onBind와 onUnbind되는 경우가 있습니다. onStart의 경우 그냥 서비스를 실행시키고 Intent에 전달된 Data만 처리하는 경우이지만, onBind의 경우 연결이 생성되고 AIDL을 통해서 서로 다른 프로세스에서 IPC를 통해 오는 Call을 처리해야하는 경우 사용됩니다. 근데 onBind는 일반 어플리케이션 작성시에는 쓸일이 많이 없습니다.
원래 이 두부분이 윈도우즈 메시지 처리구조와 프로세스 간의 IPC 처리 구조에 대한 이해 없이 이해하기가 힘든 부분입니다. 많이 안쓰이는 부분은 일단 넘어가시고 많이 쓰인다고 말씀드린 부분만 일단 익혀두시면 좋을듯 합니다.
간만에 또 다시잡으셨군요 :) 항상 열심히 공부하시는것 같습니다.