如何在整个应用程序中正确使用相同的数据库和光标?

时间:2012-06-09 02:01:38

标签: android database sqlite global-variables

我有大量数据库(~40K行),我在我的应用程序中处理。有一个活动有一个列表视图,使用CursorAdaptor显示和搜索整个数据库行。每次用户处理数据库时,我打开数据库并创建所需的Cursor,并在另一个线程中调用Cursor.getCount()来解决游标的懒惰问题,并使其为将来的操作做好充分准备。为大型数据库完成Cursor.getCount()大约需要7秒钟。

用户可以多次调用此活动,因此我将游标作为静态数据成员存储在全局类中,并且我总是重复使用相同的游标。

我想如果我没有正确关闭光标和数据库,我可能会得到奇怪的结果。对不对?!

我的问题是:何时应关闭光标和数据库?

无法在Activity.onStop()中关闭数据库和光标,因为每次活动从不可见变为可见时,我都必须重新打开数据库和光标。如果我在Activity.onDestroy中关闭了,那么在调用onDestroy之前,应用程序可能会被操作系统杀死(当设备的可用内存很低时)。

1 个答案:

答案 0 :(得分:1)

为什么不将这个全局静态类转换为singleton,这样就不会遇到实例化问题,这听起来像是你引用的。一旦在单例中调用getInstance(),您将始终在该类中获得相同的游标和数据库连接。