好的,文档声明它让 Activity 管理光标的生命周期。但是我并没有真正看到它的意义,因为当活动被销毁时,对新创建的游标的任何引用也应该被删除,然后游标本身在下一个垃圾收集周期中消失。那么为什么要打扰呢?
问问题
18740 次
1 回答
33
您不应该依赖游标被垃圾收集器销毁......游标代表大量资源:游标持有的所有数据,加上与拥有游标的内容提供者的连接,这也意味着要求其过程保存在内存中。
在最新版本的 Android 中,如果游标的终结器在没有显式关闭的情况下运行,则会打印日志消息,因为应用程序在完成游标后关闭游标很重要。
托管游标负责在活动被销毁时关闭游标,但它们的作用还不止于此:它们将在活动停止和重新启动时被停用和重新查询。
也就是说,此时您应该考虑弃用托管游标。新的 Loader API 好多了,并且对您的应用程序的用户体验进行了许多改进——它确保所有光标操作都在主线程之外完成(因此您的 UI 交互和动画中不会出现故障),并且可以当由于配置更改而重新启动活动时,跨活动实例传播现有游标数据,而不必重新加载数据。
如果您需要在比 3.0 更早的 Android 版本上运行,您可以为这些应用程序使用 v4 支持库的 Loader 实现。
于 2011-07-01T01:43:09.523 回答