Android中的多个数据库连接(来自活动和服务)

时间:2012-06-04 00:13:21

标签: android sqlite android-activity intentservice database-locking

我想使用SQLite数据库在Android应用程序中存储数据。没问题。但是在预定义的时间间隔(每天10,14,18和22点),我想运行一个需要访问数据库的IntentService。这就是问题所在:

当用户在IntentService启动时使用该应用程序时,会出现问题,因为Activity中有一个数据库连接处于活动状态,而IntentService中将建立一个数据库连接}。所以数据库将被锁定,IntentService将失败,对吗?

我是如何实现这一点的,在这些情况下,IntentService只是等待Activity完成当前操作(SELECTUPDATE等)和然后正常运行?

在我的活动中,我在SQLiteOpenHelper中打开数据库连接(通过onCreate)并在onDestroy中将其关闭。这是否意味着IntentService在此期间没有机会在数据库上工作?

1 个答案:

答案 0 :(得分:4)

  

因此数据库将被锁定,IntentService将失败,对吗?

如果他们在单独的SQLiteDatabase个对象上同时执行操作,是的。

  

如何实现这一点,在这些情况下,IntentService只是等待Activity完成当前操作(SELECT,UPDATE等)然后正常运行?

对活动和服务使用单个SQLiteOpenHelper实例,无论是通过单例,自定义Application对象还是ContentProvider