2012-04-15 2 views
0

여러 가지 활동에서 GPS를 사용하는 Android 앱에서 작업하고 있습니다. 하나의 활동에서 다른 활동으로 이동할 때마다 GPS를 시작/중지하지 않고 모든 활동에서 GPS에 액세스하는 좋은 방법을 찾고있었습니다 (이벤트 수신). 이 link에서는 서비스를 사용하고 OnStart/OnStop이 겹치기 때문에 바인드/언 바인드하는 것이 좋습니다.Android : 여러 활동의 GPS 처리

그러나 나는이 아이디어를 정말 좋아하지만 한 가지 문제 만 남겼습니다. 내 앱이 더 이상 활성화되어 있지 않으면 (홈 버튼을 눌렀을 때) GPS를 멈추고 싶습니다. 이 경우 OnPause 만 호출됩니다.

아이디어가 있으십니까?

감사합니다.

답변

0

홈 버튼을 누르면 다른 활동도 활동 라이프 사이클 메소드의 일부로 들어오고 onUserLeaveHint 메소드라고하는 메소드가 있습니다.

onUserLeaveHint는() 활동의 다른 라이프 사이클 방법으로 보호 방법이며 당신이 취급하는 경우 사용자가 집에 키

에 도달 할 때 사용자가 키를 다시 안타 onUserLeaveHint이 다음과 같은 경우

의 처리됩니다 사용자가 활동을 떠나려고에 대해

사용자가 표시기 줄을

안타 기본적으로 그것은 힌트. 즉, onUserLeaveHint()를 처리하는 경우 코드에서 onBackPressed()를 처리 할 필요가 없습니다.

+0

10 배 (내가 선호 설정, 따라서 일시 정지하고 다시 시작을 변경하려면 OSM 활동을 일시 정지) (OSM과 구글은 모두 GPS 위치 수신기와 서비스를 사용)하지만 난 뒤의 동일한 이벤트를 얻을 수 있습니다 열쇠 그래서 진짜로 문제를 해결하지 않는다. –

+0

그래서 뒤로 키와 홈 키를 구분하고 싶습니다. –

+0

예를 들어 들어오는 호출이 도착할 때와 같이 홈 버튼에만 문제가있는 것은 아닙니다. –

2

저는이 접근법을 사용했습니다. onStop()에서 바인딩 해제하면 잘 작동합니다. 이 메소드는 애플리케이션이 더 이상 보이지 않을 때 호출됩니다. 홈 키를 누르면 응용 프로그램이 보이지 않게됩니다.

로그를 선택 활동에서 OSM 활동으로 이동하면 Google지도 활동으로 이동 한 다음 홈 버튼을 누릅니다.

04-15 17:41:47.903: D/ACTIVITY(376): Select Mode Activity onPause 
04-15 17:41:47.953: D/ACTIVITY(376): OSM Activity onCreate 
04-15 17:41:48.043: D/ACTIVITY(376): OSM Activity onStart 
04-15 17:41:48.063: D/ACTIVITY(376): OSM Activity onResume 
04-15 17:41:49.394: D/ACTIVITY(376): Select Mode Activity onStop 
04-15 17:42:04.213: D/ACTIVITY(376): OSM Activity onPause 
04-15 17:42:04.763: D/ACTIVITY(376): OSM Activity onStop 
04-15 17:43:00.483: D/ACTIVITY(376): OSM Activity onStart 
04-15 17:43:00.533: D/ACTIVITY(376): OSM Activity onResume 
04-15 17:43:20.683: D/ACTIVITY(376): OSM Activity onPause 
04-15 17:43:20.723: D/ACTIVITY(376): Google Activity onCreate 
04-15 17:43:20.853: D/ACTIVITY(376): Google Activity onStart 
04-15 17:43:20.873: D/ACTIVITY(376): Google Activity onResume 
04-15 17:43:21.307: D/ACTIVITY(376): OSM Activity onStop 
04-15 17:43:40.833: D/ACTIVITY(376): Google Activity onPause 
04-15 17:43:41.403: D/ACTIVITY(376): Google Activity onStop 
+0

앱이 보이지 않아 OnStop이 호출 되었습니까? 내 활동의 모든 상태를 인쇄하고 있기 때문에 홈 버튼을 누르면 OnResume 만 호출된다는 것을 알았 기 때문입니다. OnStop은 다른 앱을 실행하는 경우에만 (홈 버튼을 누른 후) 호출됩니다. –

+0

네, 저의 게시물을 편집하여 활동의 모든 .. on() 메소드에 대한 로깅을 포함 시켰습니다. 에뮬레이터와 휴대 전화에서합니까 – NickT

+0

이상하네요. 전화기와 에뮬레이터 (2.3)에서 실행 중이며 홈 버튼을 누른 후 OnStop이 호출되지 않습니다. 다른 OS 버전을 사용해 보도록하겠습니다. –