我在我的应用程序中处理了巨大的数据库(约 40K 行)。有一个活动有一个列表视图,它使用 CursorAdaptor 在整个数据库行中显示和搜索。每次用户处理数据库时,我打开数据库并创建所需的 Cursor,并在另一个线程中调用 Cursor.getCount() 以解决游标的惰性问题,并使其为将来的操作做好充分准备。为庞大的数据库完成 Cursor.getCount() 大约需要 7 秒。
用户可能会多次调用此活动,因此我将游标作为静态数据成员存储在全局类中,并且我总是重用同一个游标。
我想如果我没有正确关闭游标和数据库,我可能会得到奇怪的结果。正确的?!
我的问题是:什么时候应该关闭游标和数据库?
无法在 Activity.onStop() 中关闭数据库和游标,因为每次活动从不可见变为可见时,我都必须重新打开数据库和游标。如果我在 Activity.onDestroy 中关闭,那么应用程序可能会在调用 onDestroy 之前被操作系统杀死(当设备的可用内存不足时)。