안드로이드 개발 질문/답변
(글 수 40,700)
여러개의 Activity안에 Service를 사용해서 백그라운드에서 프로그램 종료시까지
항상 활성화가 되어있는 작업을 만들려고 합니다.
즉 mp3 player처럼 play관련 서비스는 계속 어느 Activity에서든지 활성화가 되야하죠.
하지만 A라는 Activity에서 생성한 Service가 B로 넘어가거나 할때
Service는 종료가 되지 않는것인지.. 궁금합니다.
그리고 책에서 보면 startService로 서비스를 시작시키는 부분과
ServiceConnection으로 서비스와 액티비티를 연결해준다 하였는데 어떤 장점이 있는건지 예를 들어
Service에 관한 개념을 설명해 주시면 감사하겠습니다.
만들려고 하는부분은 Activity간을 이동하면서 Service가 종료되지 않아야 하며
버튼을 클릭했을때 Service를 제어하기도 해야 합니다. 어떤 변화를 주어야 해서요..
근데 막상 만들려니 개념이 모호해서 .. 많은 조언 부탁드립니다.
2010.01.12 12:34:26
좀 더 찾아보니 AIDL의 경우 서비스를 이용하여 한개의 어플이 아닌 여러개의 어플 끼리 서비스를 공유하여 사용하는 그런 개념인듯 합니다만.. 맞나요? 그렇다면 JNI로 뭔가 ENGINE을 돌리고 있을때 AIDL로 서로 주고받는것이 가능한지요..
서비스루틴은 안바꾸고 새로운 어플리케이션을 작성할때 A어플 B어플이 각각 있고, C라는 서비스는 동일하여 A와 B가 C라는 서비스를 그냥 불러다가 사용을 한다. -> 다만 AIDL 코드는 각 어플에 적용해주어야 한다.. 뭐 이런개념 일까요?
2010.01.12 22:55:07
[서브액티비티]
...
[서브액티비티]
진입점-> [메인액티비티] (서비스의 시작 및 종료, 바인딩 및 제어를 담당)
(binding)
[서비스]
어플내의 서비스를 생성하는 경우에는 대략 이런식으로 될꺼구요. 메인액티비티에 진입을 하면 서비스를 생성하고 바인딩을 하시면 됩니다. 이후에 다른 액티비티들을 실행시켜도 서비스가 종료되거나 하진 않습니다. (메인액티비티가 종료될때 바인딩 해제하고 서비스종료하시면 됩니다.) 바인딩을 하면 좋은 점이 서비스에 정의되어 있는 함수들을 그냥 사용할 수 있습니다 ㅡ.ㅡ; AIDL몰라도 되죠 ;)
...
[서브액티비티]
진입점-> [메인액티비티] (서비스의 시작 및 종료, 바인딩 및 제어를 담당)
(binding)
[서비스]
어플내의 서비스를 생성하는 경우에는 대략 이런식으로 될꺼구요. 메인액티비티에 진입을 하면 서비스를 생성하고 바인딩을 하시면 됩니다. 이후에 다른 액티비티들을 실행시켜도 서비스가 종료되거나 하진 않습니다. (메인액티비티가 종료될때 바인딩 해제하고 서비스종료하시면 됩니다.) 바인딩을 하면 좋은 점이 서비스에 정의되어 있는 함수들을 그냥 사용할 수 있습니다 ㅡ.ㅡ; AIDL몰라도 되죠 ;)