Android有效地使用光标



在我的Android活动中,我多次使用rawquery。对于这个rawquery,我使用一个静态游标。我的问题是:我应该在执行另一个rawquery之前关闭我的游标,或者只是让它打开直到所有的rawquery被执行(只关闭一次)。

我都试了,结果是一样的。但是在性能/调试方面,哪个更好呢?

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

设置为static并不会使它成为所有人都打开的游标。请记住,它在Java端是静态的;这里有一个本机端,为每个打开的游标使用新的资源。您需要释放这些资源

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

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

最新更新