【问题标题】:The best way to handle the sqlite database create and read operations处理 sqlite 数据库创建和读取操作的最佳方式
【发布时间】:2015-05-18 18:50:04
【问题描述】:

Althoung 我发现了一些关于这个主题的有趣帖子,它们都与此类案例或类似案例无关。我正在开发一个应用程序,它使用 GoogleMaps API 来显示地图,我希望有一个数据库,用于存储我所有的兴趣点(例如警察局、医院的位置,总共 478 个),这将是像标记一样放置在地图上。

这些值只会在应用程序第一次启动时插入一次,所以我猜我不需要多个线程或多个 SQLiteHelpers 实例来执行此操作。也许其中一个应该足以完成这项工作,或者不是?也许值得一提的是,用户将无法与数据库进行交互。

到目前为止,我有两个活动,第一个是我的 InitActivity,我在其中准备了一些并检查了一些对应用程序很重要的事情,第二个是我的 MainActivity。我想在应用程序启动后立即在 InitActivity 中插入数据,但如果可以不等待整个过程结束以启动 MainActivity,而是在数据插入开始时启动它。插入完成后,我想调用其他方法,将标记放置在地图上的每个兴趣点。此方法应从 MainActivity 执行。所以我需要一个后台任务,它在一个活动中开始并通知其他活动该操作已完成。

那么,我可以用什么来执行这种数据插入任务以及最好的方法是什么(例如 AsyncTask - 但是否可以通知其他活动该过程已完成)

提前谢谢

【问题讨论】:

    标签: android android-activity android-asynctask android-sqlite google-maps-android-api-2


    【解决方案1】:

    您几乎是在尝试在这里发明轮子,这是在浪费精力,因为这个东西已经发明了很长时间。您很可能会对 Android SQLiteAssetHelper 或其他类似帮助工具等工具感到满意。

    Android SQLiteAssetHelper

    用于管理数据库创建和版本的 Android 助手类 使用应用程序的原始资产文件进行管理。

    此类为开发人员提供了一种简单的方式来发布他们的 Android 具有现有 SQLite 数据库的应用程序(可能预先填充 数据)并管理其初始创建和所需的任何升级 与后续版本一起发布。

    它是作为 SQLiteOpenHelper 的扩展实现的,提供了一个 ContentProvider 实现延迟打开和 升级数据库直到第一次使用。

    而不是实现 onCreate() 和 onUpgrade() 方法来 执行一堆 SQL 语句,开发者只需包括 在其项目的资产目录中适当命名的文件资产。 这些将包括用于创建的初始 SQLite 数据库文件和 可选任何 SQL 升级脚本。

    【讨论】:

      猜你喜欢
      • 2018-04-14
      • 1970-01-01
      • 2023-03-12
      • 2012-09-24
      • 1970-01-01
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      相关资源
      最近更新 更多