簡體   English   中英

我應該在哪里關閉游標?

[英]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)方法?

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

好的,我認為您應該將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM