세부 응용 앱이 시작되는 백그라운드 서비스를 실행하고있는사용자 추적 및 안드로이드
에서 백그라운드 서비스에 전송 데이터입니다. 이 서비스에서는 onStartCommand()
에 GPS 위치 정보 수신을 시작합니다. 예를 들어 50 미터라고합시다. 위치는 다음과 같은 작업을 읽을 때마다 발생합니다
- 읽기 위치는
- 는
- 위치 (들)을 웹 서버로 전송되는 데이터베이스에서 모든 보내지 않은 위치를 검색 로컬 데이터베이스에 저장됩니다 전송이 성공하면
- 는, 위치 (들) 데이터베이스 이제이 문제는 위치가 read.The 사용자가 또는 50m를 만들기 위해 약간의 시간이 소요 도보있을 때마다 발생
에서 삭제됩니다 많은 읽기가 완료 될 수 있으며 데이터베이스 삽입/검색에서 문제가 발생할 수 있습니다. 따라서 주요 요청 중 하나는 모든 읽기 위치가 순차적으로 처리되도록하는 것입니다. 뭔가를 좋아하십시오 : 위치 1을 읽고, 그것을 삽입하고, 보내십시오 ... 위치 2를 읽고, 그것을 삽입하고, 보내십시오.
이 작업을 수행하는 적절한 방법을 찾을 수 없습니다. 아시다시피 서비스는 앱과 동일한 주 스레드에서 실행되므로 UI를 원활하게 유지하려면 스레딩을 사용해야합니다.
위치를 읽을 때마다 새 스레드를 제출할 ExecutorService와 Executors.newSingleThreadExecutor()를 사용하려고 생각했습니다. 이런 식으로, 나는 처리가 순차적으로 행해지는 것을 확인한다. 그러나 나는 각 읽기에 대해 새로운 쓰레드를 만든다. 그것은 좋은 일이 아닐 수도있다.
이 상황에 가장 적합한 접근 방법은 무엇입니까?
그렇다면 ExecutorService 및 Executors.newSingleThreadExecutor() ....를 사용하거나 asynctasks의 모든 내용을 바꿈 – petey