[英]where should I close a cursor?
我有一個微調器活動,其中加載了simpleCursorAdaptor。 我調用另一個類以返回由simpleCursorAdaptor使用的游標。 我沒有保留游標或適配器的類級別變量。
當此活動關閉時,我想關閉光標。 我是不是該:
a)在活動的onDestroy()事件中,通過適配器從微調器中獲取光標並將其關閉,或者
b)在數據處理程序類中,該類首先生成游標
如果使用loaderManager或supportedLoaderManager創建游標,則無需擔心會關閉游標。 還建議使用加載程序打開游標以使其脫離UI線程。
但是由於某種原因,如果您必須在UI線程上使用contentresolver查詢游標,最好在onPause中關閉游標,然后在onResume中重新查詢游標,最壞的情況是在onDestroy中將其關閉,實例,該活動可能在調用onDestory之前被垃圾收集了。
但是,如上所述,請嘗試使用帶有Loadermanager和LoaderCallbacks的CursorLoader創建游標
您是否考慮過startManagingCursor(Cursor c)方法?
好的,我認為您應該將CursorLoader與LoaderManager一起使用(如文檔中所述)。 此類在android-support庫中可用。 但是請記住,CursorLoader僅與ContentProvider一起使用。 如果您希望使用帶有簡單光標的CursorLoader,請參見不帶ContentProvider的此CursorLoader用法
編輯:
現在已不推薦使用Loader。
您必須在onStop()
或onDestroy()
關閉Cursor。 或者,您可以在從查詢中獲取Cursor之后調用startManagingCursor()
,Android會自行關閉Cursor。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.