0

在我的 Android 活动中,我多次使用 rawquery。我为那个 rawquery 使用了一个静态游标。我的问题是:我应该在执行另一个 rawquery 之前关闭我的光标,还是让它保持打开状态,直到所有 rawqueries 都被执行(只关闭一次)。

我都尝试了,结果是一样的。但就性能/调试而言,哪一个更好?

4

2 回答 2

0

应该在完成后关闭光标。否则,您将消耗应用程序的所有允许游标资源(它是有限的)并且会出现异常。

制作静态并不会使其成为所有人的开放游标。请记住,它在 java 端是静态的;这里有一个本地端,它为每个打开的游标使用新资源。你需要释放这些资源。

于 2013-01-21T13:34:17.813 回答
0

如果您在每次使用后不关闭光标,那么您的内存泄漏非常严重。您实际上在做的是为每个查询创建一个新游标,但使用单个静态引用仅引用最新的。(对旧游标的引用丢失。)

如果(例如)运行时尝试进行一些垃圾收集,未关闭的游标也可能导致致命错误。如果 SQLiteDatabase 的finalize()方法(在垃圾收集上调用)会抛出异常,如果它注意到一些游标仍然打开,这可能会杀死你的应用程序。

于 2013-01-21T13:38:14.390 回答