我有一个使用SQLite数据库的android应用程序.我在应用程序启动时打开数据库,但从不关闭它,因为它一直在使用.
告诉数据库将其所有更改刷新到永久存储的最佳方法是什么?我是否需要关闭它并重新打开或者是否有更有效的方法?
我的问题是,在手机上进行测试时,在多次写入后关闭手机有时会导致数据库在重新启动应用程序时丢失最新的更新,这对于数据库系统来说显然是不可接受的.
由于我无法找到如何捕获应用程序关闭事件,我不知道何时手动关闭数据库.
我在应用程序启动时打开数据库,但从不关闭它,因为它一直在使用.
不要那样做.您显然忽略了LogCat中出现的所有错误,抱怨您正在泄漏数据库连接.
告诉数据库将其所有更改刷新到永久存储的最佳方法是什么?
它会在交易结束时自动完成.默认情况下,每个单独的SQL操作(例如,插入)都是一个事务.
我是否需要关闭它并重新打开或者是否有更有效的方法?
您应该在某个时刻关闭数据库(例如,onDestroy()
调解数据库的服务).
我的问题是,在手机上进行测试时,在多次写入后关闭手机有时会导致数据库在重新启动应用程序时丢失最新的更新,这对于数据库系统来说显然是不可接受的.
如果即使在正确关闭数据库连接后也可以创建演示问题的示例项目,请将其发布到Android问题跟踪器.
由于我无法找到如何捕获应用程序关闭事件,我不知道何时手动关闭数据库.
当所有活动都从调解数据库连接的服务解除绑定时,关闭它,触发该服务的onDestroy()
方法.
或者,在需要访问数据库的每个组件中打开一个新连接,并使用Java同步来确保两个线程不会尝试同时使用数据库(如果需要).