2017-04-23 1 views
0

내 서비스를 수신하지 않습니다. onCreate 또는 onResume에 코드를 입력해도 트리거되지 않습니다. 그러나, 예를 들어, ListenerButton과 연결되어 있거나 액티비티의 onStop 콜백에 있습니다. 왜 그런가요?서비스는 특정 방송을

+0

아마도 onCreate(), onStart(), 또는 onResume()이 호출 될 때까지 서비스가 아직 실행되지 않고있을 것입니다. – CommonsWare

+0

그리고 어떻게 실행되는지 확인할 수 있습니까? 서비스를 시작하는 코드로 내 대답을 편집했습니다. –

+0

더 간단한 해결책은 너무 빨리 방송을 보내려고하지 않는 것입니다. 그렇게하지 않아도됩니다. 서비스가 즉시 필요하다면, onStartCommand()에서 그렇게하십시오. – CommonsWare

답변

1

바로 방송을 보내려하지 말고 서비스가 onCreate() 또는 onStartCommand() 방법으로 설정 작업을 수행하도록하십시오.

서비스가 UI와 별도의 프로세스에 있지 않는 한 시스템 브로드 캐스트를 사용하는 것은 상당히 나쁜 생각입니다. 그럼에도 보안을 생각해 봐야합니다. 어떤 앱이라도 무엇을 할 지 알려면 방송을 보내야합니다.

서비스와 사용자 인터페이스가 동일한 프로세스 인 경우 개선 된 보안뿐만 아니라 성능 향상을 위해 인 프로세스 이벤트 버스 (예 : LocalBroadcastManager, greenrobot의 EventBus)를 사용하세요.