마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

서비스 컴포넌트 오류? usb선 뽑았을 때~

0 추천
Avd로 안드로이드 에물레이터를 만들어서 앱을 테스트해왔습니다. Usb를 물려서 실제 스마트폰을 mtp로 연결해 만들어놓은 앱을 돌려보았죠.
안드로이드 4대 컴포넌트 중 하나인 서비스를 사용해서 액티비티와 값을 주고 받습니다. 콜백으로 서비스쪽에는 onBind()가 있고요.
Avd에서 서비스를 사용하는 기능이 작동합니다. Usb에 물린 진짜 스마트폰에서도 잘 됩니다.
그러나 usb를 뽑는 순간 부터 스마트폰에 올려놓은 앱은 이상 작동해요. 서비스 기능은 멈추고 다른 컴포넌트인 액티비티는 정상으로 움직입니다.
MinSdkVersion, targetSdkVersion을 바꿔봐도 정상작동을 볼 수 없습니다.
에물레이터에서는 되는 서비스 service 기능이 실기기에서는 usb연결선을 뽑기만하면 오작동을 할까요.
유사 증상을 겅험하신분 있으산지요?
타드이별펍 (440 포인트) 님이 2014년 11월 12일 질문

1개의 답변

0 추천

그건 안드로이드 실지 기기에서는 안드로이드 시스템이 불필요한 서비스라고 생각되는 경우 강제로 서비스를 죽여버리기때문입니다.

그래서 저 같은 경우는 안드로이드 alarmmanager를 이용해서 리시버를 등록해놓고 일정시간간격(예; 20초정도)으로 리시버를 호출하도록 해주었고요, 리시버에서는 서비스를 체크해서 다시 시작하는 부분을 넣었습니다.

이렇게 하면 영원히 죽지 않는 서비스를 구현할수가 있습니다. 물론 기껏 20초 정도는 죽겠지만.. ㅎㅎ

구글에 alarmmanager와 setrepeating 함수로 검색하시면 될겁니다. 도움이 되셨길...
지미라 (4,330 포인트) 님이 2014년 11월 13일 답변
avd가 실 장비를 그대로 에물레이터하는 기능인데 어떻게 작동방법이 다를 수가 있는지 안드로이드와 sdk를 만든 정책에 이해가 안되는 군요.
아무튼 답변을 달아주셔서 고마와요. ^^
...