2015-01-13 3 views
0

기기가 위치를 변경할 때 일부 코드를 실행해야하는 작은 Android 앱을 작성하고 있습니다. 앱이 실행 중이 아니더라도 (백그라운드가 아닌 정지 된 상태에서도) 위치 변경시 코드를 실행할 수 있는지 궁금합니다. 내 말은, 위도/경도가 변경되면 내 앱 (또는 내 앱의 특정 활동)을 '깨우는'(또는 시작하는) 시스템 서비스가 있습니까?앱이 실행 중이 아닌 경우 위치 변경시 코드 실행

지금까지 좀 기준 설정 을 locationManager,하는 제공를 작성하고 requestLocationUpdates을 설정했습니다. 이것은 작동하지만 앱이 실행되고 있지 않으면 업데이트가 없습니다.

답변

2

업데이트가 통보 된 Service을 만들어야합니다. 앱이 실행되지 않아도 서비스는 "백그라운드"로 실행됩니다.

사용자가 앱에있을 때 앱을 업데이트 할 것으로 예상되는 경우 서비스에 bind의 액티비티가 필요하기 때문에 복잡해질 수 있습니다. 여기

는 튜토리얼 :

http://www.vogella.com/tutorials/AndroidServices/article.html

그리고 공식 문서가 너무 좋다 :

http://developer.android.com/reference/android/app/Service.html

조심 - 메모리가 부족할 때 서비스는 안드로이드에 의해 종료 될 수있다. 사용자는 앱을 강제 종료 할 수도 있습니다. 항상 실행되고 있다고 가정하지 말고 대부분의 시간 동안 실행된다고 가정 할 수 있습니다.

그리고 서비스 라이프 사이클에 주목 - 그것은 다른 및 활동의 :

http://developer.android.com/guide/components/services.html#Lifecycle

+0

안녕 짐, 답변 주셔서 감사합니다! 그래서 기본적으로 locationManager를 인스턴스화하는 Service를 생성해야합니다. 서비스에서 실행되는 위치 관리자는 "requestLocationUpdates"및 locationListener를 통해 위치 변경 내용을 청취합니다. 맞아? – AleCat83

+0

예, 정확하게 맞습니다. 기억해 둬도 안드로이드는 언제든지 서비스를 종료 할 수 있습니다. 따라서 서비스에서 locationManager를 관리해야합니다. 활동이 아닌 서비스에서 업데이트를 수신합니다. 그러나 실시간 업데이트가 표시되도록하려면 활동의 서비스에 바인딩해야합니다. – Jim

관련 문제