我有一个加载simpleCursorAdaptor的微调器的活动。我调用另一个类来返回由simpleCursorAdaptor使用的游标。我不保留游标或适配器的类级变量。我应该在哪里关闭游标?
当此活动关闭时,我想关闭游标。我应该:
一)在活动中的的的onDestroy()事件,得到通过适配器微调光标并关闭它那里或
b)在数据处理程序类,它首先产生光标
我有一个加载simpleCursorAdaptor的微调器的活动。我调用另一个类来返回由simpleCursorAdaptor使用的游标。我不保留游标或适配器的类级变量。我应该在哪里关闭游标?
当此活动关闭时,我想关闭游标。我应该:
一)在活动中的的的onDestroy()事件,得到通过适配器微调光标并关闭它那里或
b)在数据处理程序类,它首先产生光标
如果使用loaderManager或supportedLoaderManager创建游标,则不必担心关闭游标。还建议使用加载程序打开游标以在UI线程之外执行游标。
但是,由于某些原因,如果必须在UI线程上使用contentresolver查询游标,最好关闭onPause中的游标并在onResume中查询游标,最坏的情况是关闭onDestroy ,可能有一个实例可能在调用onDestory之前收集垃圾。
以上请但是提到尝试创建使用CursorLoader与Loadermanager和LoaderCallbacks
你有没有考虑过的方法startManagingCursor(光标C)光标?
Altough,我认为你应该使用CursorLoader与LoaderManager(如文档中说的)。这些类可以在android-support库中找到。但请记住,CursorLoader仅适用于ContentProvider。如果你想用一个简单的光标CursorLoader,看到这个CursorLoader usage without ContentProvider
编辑:
现在,这已被弃用,以装载机。
您必须关闭onStop()
或onDestroy()
中的光标。或者,从查询中获得游标后,您可以拨打startManagingCursor()
,Android会自行关闭游标。
startManagingCursor以及managedQuery都已折旧并且必须避免。 – akshaydashrath