我们都知道,诸如数据库连接之类的资源应该尽可能晚地获取并尽早释放。
然而,将此原则应用于Android上的SQLite数据库连接却给我带来了一些头疼。
我有一个应用程序,在后台工作的服务中从后端服务器下载更新,并定期将更新写入数据库。当发生以下序列时,我遇到了问题:
- 服务打开可写数据库连接
- 某些活动打开可读数据库连接
- 服务与读取数据的活动同时关闭其数据库连接
- 活动因其数据库连接被关闭而失败
服务和活动都使用相同的SQLiteOpenHelper
类(虽然是不同的实例)来打开它们的连接。 我最初的假设是这应该可以正常工作,但不知为何似乎底层连接在两个数据库实例之间共享。
这里有什么明显的问题吗?