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



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

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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新