在整个申请期限内保持SQLiteDatabase
引用的正确方法是什么?
目前,我有一个看起来像这样的课程:
public class myApp {
public static SQLiteDatabase DB;
//...
}
然后在我的课程中Application
,onCreate()
我会检查myApp.DB
是否为null
,如果是,请创建一个新的SQLiteOpenHelper
课程并设置它到getWritableDatabase()
。在我的应用程序中,我引用了myApp.DB
来查询各种问题等。
这在本地测试目的下工作正常,但是其他人正在经历这会产生奇怪行为的情况(主要是在尝试使用select DISTINCT tbl_name from sqlite_master where tbl_name = 'myTable'
来确定表的存在时) - 猜测,我在想某事正在发生导致myApp.DB
引用被GCed。这让我相信我需要在与数据库交互之前对null执行相同的检查,但我不喜欢在每次单个数据库交互之前进行检查的想法(可能通过在我自己的方法中包装所有查询来调用该检查第一)。
那么维护数据库可靠引用的最佳做法是什么?我应该在每次互动之前保持对SQLiteOpenHelper
和getWriteableDatabase
的引用吗?