Android中的多个数据库连接(来自活动和服务)
我想使用SQLite数据库在Android应用程序中存储数据。没问题。但是在每天10点、14点、18点和22点的预定义时间间隔,我想运行一个IntentService,它也需要访问数据库。问题来了: 当用户在启动IntentService时使用应用程序时,会出现问题,因为活动中有一个数据库连接处于活动状态,而IntentService中将建立一个数据库连接。所以数据库将被锁定,IntentService将失败,对吗 在这些情况下,IntentService如何实现这一点,只需等待活动完成当前操作SELECT、UPDATE等,然后正常运行 在我的活动中,我在onCreate中通过SQLiteOpenHelper打开数据库连接,并在onDestroy中关闭它。这是否意味着IntentService在此期间不可能在数据库上工作 所以数据库将被锁定,IntentService将失败,对吗 如果它们同时对单独的SQLiteDatabase对象执行操作,则为“是” 在这些情况下,IntentService如何实现这一点,只需等待活动完成当前操作SELECT、UPDATE等,然后正常运行Android中的多个数据库连接(来自活动和服务),android,sqlite,android-activity,intentservice,database-locking,Android,Sqlite,Android Activity,Intentservice,Database Locking,我想使用SQLite数据库在Android应用程序中存储数据。没问题。但是在每天10点、14点、18点和22点的预定义时间间隔,我想运行一个IntentService,它也需要访问数据库。问题来了: 当用户在启动IntentService时使用应用程序时,会出现问题,因为活动中有一个数据库连接处于活动状态,而IntentService中将建立一个数据库连接。所以数据库将被锁定,IntentService将失败,对吗 在这些情况下,IntentService如何实现这一点,只需等待活动完成当前操作
无论是通过单例、自定义应用程序对象还是ContentProvider,为活动和服务使用单个SQLiteOpenHelper实例。非常感谢!自定义应用程序类听起来不错。但是,当我使用这个自定义类时,创建和关闭是什么时候完成的?@MarcoW:您可能会触发在创建应用程序时打开数据库,或者延迟创建它,正如您所认为的那样,只需在后台线程上这样做。很可能,您永远不会关闭它,只会在进程终止时让SQLiteOpenHelper与其他所有东西一起被丢弃。它工作得非常好,谢谢!我真的从未对数据库对象或SQLiteOpenHelper调用close吗?但是,插入数据库的数据是否安全,不会丢失?他们会马上提交吗?@MarcoW.:插入数据库的数据是否安全,不会丢失对他们会马上提交吗是的,谢谢,真是一个很好的解决方案!