bra*_*ess 11 java database sqlite android database-connection
我发现"java.lang.IllegalStateException: Cannot perform this operation because the connection pool has been closed."
Android应用程序的例外情况很少.我没有在许多地方关闭连接.在某些其他线程中,连接也可能被关闭.
只是为了确保,SQLite连接是自动关闭还是由操作系统隐式关闭?
这个源码建议你使用单例DatabaseHelper,有些并没有妖魔化它。
这对我来说意味着数据库不会在应用程序的生命周期内简单地自行关闭。
第一来源@Alex Lockwood
方法#1:使用单例实例化 SQLiteOpenHelper
将数据库助手声明为静态实例变量,并使用单例模式来保证单例属性。下面的示例代码应该可以让您了解如何正确设计 DatabaseHelper 类。
静态 getInstance() 方法可确保在任何给定时间只有一个 DatabaseHelper 存在。如果 sInstance 对象尚未初始化,则会创建一个。如果已经创建了,那么它将被简单地返回。您不应该使用 new DatabaseHelper(context) 来初始化辅助对象!相反,请始终使用 DatabaseHelper.getInstance(context),因为它保证在整个应用程序的生命周期中仅存在一个数据库助手。
第二来源@CommonsWare
拥有单个 SQLiteOpenHelper 实例可以在线程情况下有所帮助。由于所有线程将共享公共 SQLiteDatabase,因此提供了操作同步。