将gps-location连续保存到sqlite

时间:2012-03-05 23:56:03

标签: android

我正在尝试制作自己的gps-tracker,主要用于骑自行车。我设法制作了一个可用的应用程序,至少是供个人使用,但我想改进它,并添加了ContentProviders,Fragments,CursorAdapters和Service来接收来自GPS的onLocationChanges。

但是,我真的不知道如何处理我收到的地点流。我的旧应用程序只是将它们保存到ArrayList中,所以现在我的服务正在向我的Activity发送一个Broadcast,它将它们保存到ArrayList。

问题是,当骑行结束时,将位置保存到sqlite需要5-15秒(是的,我正在使用编译语句和事务),我想通过保存位置来避免这种情况收到的时候。当我尝试这样做时,我的应用程序变得没有响应(正如预期的那样),因为我在UI线程中进行插入,并且我确实经常收到位置更新。

这当然是应用程序最重要的方面,那么解决方案是什么?

  • 我可以在一个帖子中插入,但由于插入一条记录很昂贵,我不确定它是否可以跟上。

  • 我可以在交易中一次写入25条记录(或更多),但会有一些逻辑来跟踪保存的内容和不保存的内容。

是否有其他选择可以提供更好的用户体验?

2 个答案:

答案 0 :(得分:3)

使用IntentService将保存委托给另一个线程,然后使用applyBatch进行插入。

答案 1 :(得分:0)

Personaly我认为gps轨道在文件中会比嵌入数据库轨道更好,只是很大。这与图片中的嵌入相同,其中嵌入数据库不是推荐的解决方案。数据库只保存一些摘要信息和对文件的引用。你可以随时写出文件,最后没有大的停顿。如果您正在使用它来替换地图上的路径或图形图等,那么您在录制时也会保留本地ArrayList。这就是我在自行车应用程序IpBike中执行操作的方式。