2012-06-19 101 views
0

我有一个加载simpleCursorAdaptor的微调器的活动。我调用另一个类来返回由simpleCursorAdaptor使用的游标。我不保留游标或适配器的类级变量。我应该在哪里关闭游标?

当此活动关闭时,我想关闭游标。我应该:

一)在活动中的的的onDestroy()事件,得到通过适配器微调光标并关闭它那里或

b)在数据处理程序类,它首先产生光标

回答

3

如果使用loaderManager或supportedLoaderManager创建游标,则不必担心关闭游标。还建议使用加载程序打开游标以在UI线程之外执行游标。

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

以上请但是提到尝试创建使用CursorLoader与Loadermanager和LoaderCallbacks

1

你有没有考虑过的方法startManagingCursor(光标C)光标?

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

Altough,我认为你应该使用CursorLoader与LoaderManager(如文档中说的)。这些类可以在android-support库中找到。但请记住,CursorLoader仅适用于ContentProvider。如果你想用一个简单的光标CursorLoader,看到这个CursorLoader usage without ContentProvider

编辑:

现在,这已被弃用,以装载机。

+1

startManagingCursor以及managedQuery都已折旧并且必须避免。 – akshaydashrath

-1

您必须关闭onStop()onDestroy()中的光标。或者,从查询中获得游标后,您可以拨打startManagingCursor(),Android会自行关闭游标。