【问题标题】:Android; caching geocoding data?安卓;缓存地理编码数据?
【发布时间】:2010-11-05 22:22:15
【问题描述】:

我的应用从android.location.Geocoder; 类多次调用getFromLocationName,这目前在我的活动中处理,该活动还显示一些取决于该调用结果的数据。

这可能会很慢,例如,在加载活动之前,它首先必须完成各种调用,这取决于网络连接。

获得结果后,我真的不需要刷新它(我的意思是位置和地理坐标多久更改一次?)

我的问题:我怎样才能最好地避免每次运行我的应用程序时都查询这些数据。我应该对启动时加载它们的服务做些什么吗? (如果必须查询 50 次以上可能会很慢)。或者我应该拨打电话,将结果存储在 SQL 中,然后如果我当前没有保留结果,则只在下次查询?

【问题讨论】:

    标签: android android-2.1-eclair android-location location-based-service


    【解决方案1】:

    如果您想快速缓存它,我建议将最新结果存储在 SQLite 数据库中。如果您不需要数据库用于其他任何事情,您甚至可以使用PreferenceManager 进行快速存储。只需存储最新的坐标和日期时间,然后检查日期时间是否在 X 分钟或 X 小时后过期(如果这是您想要做的)。

    【讨论】:

    • 好吧,我不需要 SQL lite 来做其他任何事情(在这个阶段)。是否需要考虑任何性能权衡,即它是否比每次手动查询位置服务更快?
    • @James 我想说最重要的因素是 1)它本地存储在您的手机上并且可以快速访问 2)获取您的 gps 坐标需要一段时间才能锁定 gps在(或通过手机信号塔,如果 gps 关闭)。所以在速度方面它会很快,但最大的问题是你最后的 GPS 坐标有多“冷”或陈旧(多近)。而且您仍然必须在第一次找到坐标。并且用户可能会移动很多(比如说,一辆车)。我仍然认为缓存可能会对您有所帮助(也许给用户一个手动 GPS 刷新选项?)
    • 听起来不错,从 SQL Lite 进行的初始查询和存储/读取怎么样,应该全部驻留在服务中,还是保持活动安全? (只是在这里寻求建议)
    • 你应该可以从活动中调用它。有关基本的 sql lite 数据库教程,请参阅此内容:reigndesign.com/blog/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    相关资源
    最近更新 更多