处理sqlite数据库创建和读取操作的最佳方法

时间:2015-05-18 18:50:05

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

Althoung我发现了一些关于这个话题的有趣帖子,其中没有一个与这种情况或类似情况有关。我正在开发一个使用GoogleMaps API来显示地图的应用程序,我希望有一个数据库,用于存储我所有的兴趣点(例如警察局,医院,总共478个州)的位置。放在地图上就像标记一样。

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

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

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

提前谢谢

1 个答案:

答案 0 :(得分:1)

你正试图在这里发明轮子,这是浪费了努力,因为这件事已经发明了很长时间。您很可能会对Android SQLiteAssetHelper等工具或其他类似帮助者感到满意。

  

Android SQLiteAssetHelper

     

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

     

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

     

它是作为SQLiteOpenHelper的扩展实现的,提供了一个   ContentProvider实现推迟开放的有效方法   升级数据库直到第一次使用。

     

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