저는 주로 자전거 타기 용으로 gps-tracker를 만들려고합니다. 적어도 개인적인 용도로 사용할 수있는 앱을 만들었지 만이를 개선하고 ContentProviders, Fragments, CursorAdapters 및 서비스를 추가하여 GPS에서 onLocationChanges를 수신했습니다.gps-location을 sqlite에 계속 저장하십시오.
그러나 실제로받는 위치 스트림을 처리하는 방법을 알지 못합니다. 내 오래된 앱에서 그냥 ArrayList에 저장 했으므로 이제 내 서비스에서 내 Activity로 브로드 캐스트를 보내 ArrayList에 저장합니다.
문제는 드라이브가 끝나면 위치를 sqlite에 저장하는 데 5-15 초가 소요된다는 것입니다 (예, 저는 compiledstatement와 트랜잭션을 사용하고 있습니다). 수신 된 위치. 내가 그렇게하려고 할 때 UI 스레드에서 삽입 작업을 수행 할 때 내 앱이 응답하지 않게되었습니다 (예상대로). 위치 업데이트를 자주 수신합니다.
이것은 물론 앱의 가장 중요한 측면이므로 해결책은 무엇입니까?
스레드에서 삽입 작업을 수행 할 수 있지만 단일 레코드를 삽입하는 것이 비용이 많이 들기 때문에 계속 유지할 수 있을지 확신하지 못합니다.
트랜잭션에서 한 번에 25 개의 레코드 (또는 그 이상)를 쓸 수 있지만 저장되는 항목과 저장되지 않은 항목을 추적하는 논리가 있습니다.
더 나은 사용자 경험을위한 다른 옵션이 있습니까?
감사합니다. 그것은 고려해야 할 사항 일 수 있습니다. 데이터베이스 대신 파일에 쓰는 것이 더 빠를 것이라고 가정합니다. 녹음하는 동안 파일을 열어 두었습니까? –
예 서비스에 파일을 쓰고 그냥 열어 두십시오. 나는 간헐적으로 그것을 내 보낸다. – Ifor