2017-09-28 5 views
2

나는 안드로이드 스튜디오에서 응용 프로그램을 개발하고 있는데, 나는 장치의 위치를 ​​저장해야한다. 서비스를 확장하는 "locationService"클래스를 만들었 기 때문에 위치는 내 서버와 서비스에서 구분된다. 배경에있을거야. 안드로이드 관련 문서를 읽었으며 두 가지 유형의 서비스 (서비스 및 링크 된 서비스)가 있습니다. 활동에 위치 데이터를 표시해야하므로 링크 된 서비스를 사용합니다.배경에 안드로이드 애플 리케이션

문제는 응용 프로그램을 닫으면 서비스가 종료되고 위치 변경이 기록되지 않습니다.

어떻게 링크 된 서비스가 죽는 것을 방지 할 수 있습니까? 고마워요

+0

주의 사항. https://stackoverflow.com/a/3856940/6759520 – amuyu

답변

0

나는 "연결된"Service이 아닌 "바운드"를 의미한다고 가정합니다. Service. 바인딩 된 Service은 마지막 클라이언트가 연결을 끊을 때 실행을 중지합니다. 이를 방지하려면 startService()으로 전화하여 ServiceSTART_STICKYonStartCommand()에서 반환해야합니다.

Service에서 Activity으로 데이터를 전달하기 위해 "바인딩 된"Service을 사용할 필요가 없습니다. 또 다른 방법은 Intent에 '추가'로 데이터를 추가하고 Intent과 함께 sendBroadcast()을 호출하여 데이터를 Service에 브로드 캐스트하도록하는 것입니다. ActivityService으로 데이터 브로드 캐스트를 청취하기 위해 BroadcastReceiver을 설정할 수 있습니다.

+0

감사합니다. 올바른 용어는 번들입니다. 이미 응용 프로그램에서 구현되었으며 올바르게 작동했습니다. 이제는 백그라운드에서 다른 응용 프로그램을 최소화 할 때 활동을 시작하고 원하는 정보를 표시 할 수있는 다른 기능을 구현하려고합니다. 집과 나는 그것을 닫지 않습니다), 그리고 나는 당신에게 새로운 정보를 보내고 나는 그 정보를 보여주는 포 그라운드에서 나의 신청서를 넣고 싶다. –

+0

"묶음"이 아니라 "묶음"을 의미한다고 가정합니다. 앱을 포 그라운드로 가져 오려면 앱에 대한 "시작 의도"를 얻고 그걸로 startActivity()를 호출하십시오. 앱을 포 그라운드로 가져와 원하는 것을 할 수 있습니다. https://stackoverflow.com/a/14137045/769265 –

+0

감사합니다. 나는이 메소드를 구현했고 작동했다. 이제는 다른 문제가있다. 내 서비스에서 true 값으로 시작하는 부울 변수가 있고, 내 애플리케이션에서 false로 변경하도록 명령한다. 응용 프로그램에서 뭔가 재시작으로 서비스가 발생하고 내 변수가 초기 값 (true)으로 돌아갑니다. 내 서비스가 "재부팅"되지 않는 몇 가지 방법이 있습니다. –

관련 문제