简短版:从活动和启动服务访问同一数据库的最佳实践方式是什么?
长版:我有一个从活动开始持久服务的案例。当活动在屏幕上显示数据时,服务正在用数据填充数据库。它们都不是一直在运行 - 服务可以在没有活动时运行,而活动可以在服务尚未启动时运行。但是服务只能从活动中停止(它永远不会自行停止)。
我正在使用 SQLiteOpenHelper 的子类来访问数据库。我绊倒的问题是,显然在一个实例中关闭数据库SQLiteOpenHelper
也会在另一个实例中关闭它。
我可以想到这些选项:
- 单例模式(
SQLiteDatabase
公共静态变量中的单个实例 - 只有活动才能关闭它(因为它知道服务是否正在运行)) - 丑陋 - 检查服务/活动是否正在运行,然后在另一个中关闭它 - 丑陋
- 将获取/发布构建到 SQLiteOpenHelper 的
getReadableDatabase()
/close()
我会选择 3.,但这一定是一个非常常见的模式,所以我想知道是否已经有这样的内置机制 - 我不想重新发明轮子。
换句话说,正确的方法是什么?