0

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

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

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

我的问题是:什么时候应该关闭游标和数据库?

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

4

1 回答 1

1

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

于 2012-06-09T04:13:22.183 回答