0

我有一个带有微调器的活动,它加载了一个 simpleCursorAdaptor。我调用另一个类来返回 simpleCursorAdaptor 使用的光标。我不保留游标或适配器的类级别变量。

当此活动关闭时,我想关闭光标。我是不是该:

a) 在活动的 onDestroy() 事件中,通过适配器从微调器获取光标并将其关闭或

b)在首先生成光标的数据处理程序类中

4

3 回答 3

3

如果您使用 loaderManager 或 supportedLoaderManager 创建游标,则无需担心关闭游标。还建议使用加载程序打开游标,以便在 UI 线程之外执行此操作。

但是由于某种原因,如果您必须使用 UI 线程上的 contentresolver 查询游标,最好在 onPause 中关闭游标并在 onResume 中重新查询游标,最坏的情况是在 onDestroy 中关闭它,可能会有在调用 onDestory 之前可能会收集活动垃圾的实例。

但是如上所述,请尝试使用带有 Loadermanager 和 LoaderCallbacks 的 CursorLoader 创建光标

于 2012-06-19T23:19:07.760 回答
1

您是否考虑过 startManagingCursor(Cursor c) 方法?

http://developer.android.com/reference/android/app/Activity.html#startManagingCursor(android.database.Cursor)

尽管如此,我认为您应该将 CursorLoader 与 LoaderManager 一起使用(如文档中所述)。这些类在 android-support 库中可用。但请记住,CursorLoader 仅适用于 ContentProvider。如果您想要一个带有简单光标的 CursorLoader,请参阅没有 ContentProvider 的 CursorLoader 用法

编辑:

这现在已被 Loaders 弃用。

于 2012-06-19T23:19:15.143 回答
-1

您必须在onStop()或中关闭光标onDestroy()。或者,您可以startManagingCursor()在从查询中获取光标后调用,Android 将自行关闭光标。

于 2012-06-19T23:24:30.473 回答