음악 플레이어 같은걸 만들고 있는데..
서비스의 동작에서 문제가 있습니다.
일단 재생을 누르면 서비스에서 돌아가게되고, 액티비티내에서 재생중 종료하면 서비스에서 계속 돌아가게두고
정지를 누르고 액티비티를 종료하면 서비스를 죽이게 했습니다.
그런데 서비스가 잘 죽지를 않는것 같습니다.
액티비티를 실행할때 서비스에서 현재 실행중인 정보를 BR로 받아오게 해두었습니다.
액티비티를 처음 실행할때 실행중인 서비스가 없으면 자체적으로 초기화 하게 해두었구요.
그런데 가끔 플레이어를 정지 상태에서 뒤로가기를 통해 서비스를 죽인후 빠르게 다시 액티비티를 실행시킬경우 분명 서비스가 죽어서 초기화가 되어야 하는데 서비스에서 정보를 받아오는겁니다.
물론 여기서 재생을 하면 재생이 안됩니다.. 서비스가 BR로 정보를 주고나서 다시 죽어버리네요..
한마디로.. 서비스가 즉각적으로 죽지를 않는것 같은데요..
그래서 ..
서비스를 종료하는 onDestroy()에서 서비스를 죽이는 stopService(intent); 를 실행해두고
서비스가 존재하는지 확인하는 코드를 만들어 while문을 계속 돌면서 종료될때까지 무한루프 대기하게 해두었습니다.
참고로 서비스가 존재하는지 확인하는 코드는 액티비티를 처음 실행시킬때도 돌려서 초기화할지 기존의 서비스에서 현재 실행중인 정보를 받아오는지를 확인하는데도 쓰는 동일한 코드구요..
그런데 ;;
로그로 확인을 해보면 onDestroy에서 서비스가 죽지않아 걸리는 경우는 한번도 없습니다;;
하지만 다시 액티비티를 실행한 경우 서비스가 살아있다고 걸려서 기존 서비스에서 실행정보를 받아옵니다 ;;
이게 가능하려면..
순간적으로 서비스가 죽었다가.. 다시 살아났다가.. 다시 죽어야 하는데 ;;;
순간적으로라도 죽은 서비스가 실행 정보를 가지고 있다는것 자체도 이해가 안되네요 ;;
서비스 존재 여부를 확인하는 코드가 잘못된걸가요.. 아니면 서비스가 원래 좀 특이한가요 ;;
참고로 START_STICKY 로 서비스 실행하고
종료시킬땐 stopService() 씁니다.
서비스에서 selfService()가 더 좋으려나요..




START_NOT_STICKY 사용해 보세요.