2012-02-25 4 views
2

백그라운드 서비스 작업을 구현해야하는 방식을 결정하는 데 약간 혼란 스럽습니다. 내 서비스는 다음과 같습니다.안드로이드 서비스의 별도 스레드에서 위치 업데이트 실행

안드로이드 서비스

  1. locationListener 등록하고 새 위치를 수신, 최적의 위치를 ​​결정 여부에 대한 처리를 (백그라운드에서 수행하는 두 가지 작업을 가지고).

  2. 서버를 10 분마다 폴링하여 서버 측에서 원격 데이터베이스가 변경되는지 확인하십시오.

이제는이 두 가지 작업이 타이밍과 리소스에 맞지 않기를 바랍니다. 그래서 저는이 두 가지를 동시에 실행할 계획입니다. 서버로 폴링 할 때 반복되는 timerTask를 사용하지만 LocationListener에 대해서는 무엇을 사용해야합니까?

로직을 사용하여 새 위치를 처리하고 위치를 서버로 업데이트하려면 Java 실행 파일을 사용해도됩니까? 내 아이디어가 괜찮 으면 새 스레드에서 위치 업데이트를 어떻게 수행 할 수 있는지 보여주는 샘플 코드를 제공하십시오.

현재 아이디어에 문제가 있다고 생각되면 새로운 요구 사항을 제안하십시오.

답변

1

나는 설명서에, 당신은 당신의 서비스에서 실행되는 LocationListener를 등록 할 수 없습니다 제안이, 아무것도 볼 : 이 답변에 비슷한 질문입니다 http://developer.android.com/reference/android/location/LocationListener.html http://developer.android.com/guide/topics/location/obtaining-user-location.html

, 당신은 그것을 읽어야 Android service with locationListener callbacks

"이제는이 두 가지 작업이 타이밍과 리소스를 놓고 싸우길 원치 않으므로이 두 작업을 동시에 수행 할 계획입니다." ^ 애매 모호한 진술 다음에 겉보기 반 직관적 인 계획이 뒤 따른다. "타이밍"과 "자원"이 의미하는 바를 구체적으로 설명 할 수 있다면, 그에 대한 유용한 피드백을 얻을 수 있습니다.

짧은 대답 : 예. LocationListener를 등록하면 Location 업데이트를 사용할 수있을 때 호출됩니다. 그것은 당신이 그것을 등록 할 필요가있을 때 호출된다는 점에서 청취자입니다 - 당신이 직접 전화 할 필요는 없습니다. 가장 좋은 방법은 TimerTask에서 반복하지 않고 각 틱이라고하는 코드로 재설정되는 원 샷을 사용하는 것입니다.

무료 코드는 아마도 당신을 위해 열심히 일하는 사람을 고용해야합니까? Android 커뮤니티에서 또 다른 직업을 창출하고 숙달되지 않은 무언가를 시도 할 때 발생할 수있는 위험을 완화합니다. 그렇지 않으면 손이 더러워지고 최상의 결과를 얻을 수 있다고 생각하는 방식으로 구현하십시오. 스택 오버플로 특정 문제가 발생하는 경우.

+0

straya : 답장을 보내 주셔서 감사합니다. 하지만 당신이 답변을하면 작업 및 위치 업데이트 작업이 같다고 생각하는 것 같습니다. 현재 위치에 TimerTask를 사용하지 않습니다. 그러나 타이머 작업은 원격 웹 서버에서 일부 데이터베이스 업데이트를 가져 오는 데 사용됩니다. 내 위치 수신기가 호출 된 timerTask를 실행하는 동안 수 있습니다. 그래서 스레드를 구현하려고합니다. 내 새로운 설명에 대한 의견을 말할 수 있다면 그것은 나를 위해 도움이 될 것입니다 ... –

+0

아니, 나는 그들이 같지 않다고 생각하지. 제가 작성한 내용에 근거하여 그것이 내가 생각하는 것이라고 생각한다면, 당신의 목적에 잘못된 것이 있습니다. 내가 아주 신중하게 말한 것을 다시 읽으십시오. 청취자를 등록하고 그 일을하게하십시오. TimerTask를 설정하고, 그것의 일을 시키십시오. 그들이 "같은 시간에"(당신이 중요한 정보를 가지고 있다고 생각하게 만듭니다 ...) – straya

관련 문제