2012-07-17 23 views
1

冰淇淋三明治,我的應用程序啓動強制關閉時,我想恢復具有與已經在managedQuery到一個CursorAdapter通過一個CursorAdapter一個GridView的應用。 異常將是StaleDataException,說我正試圖訪問正在關閉的遊標。安卓:管理光標傳遞給CursorAdapter的

我用來代替使用managedQuery的getContextResolver()。查詢。當我嘗試恢復應用程序時,幫助我停止強制關閉應用程序。

在這種情況下,如果我用這種方式。我是否需要關閉光標或將它由適配器關閉?

+0

請,請,請不要使用'managedQuery'。 [閱讀這裏瞭解爲什麼](http://www.androiddesignpatterns.com/2012/07/loaders-and-loadermanager-background.html)。 – 2012-07-17 03:26:13

回答

2

使用managedQuery你並不需要手動關閉遊標,但使用ContentResolver的手動你需要做這樣每Activity documentation。適配器不會關閉遊標,因爲當用戶離開應用程序並且遊標不再需要時,它不知道(而不是Activity)。通常用空值(適配器將關閉舊的)調用changeCursor()或用空值調用swapCursor()就足夠了(並手動關閉返回的遊標)。

但我會建議看看CursorLoader爲更加得心應手,可靠和谷歌的方式提出來加載光標。如果您針對的是舊版Android,請考慮使用support library v4

+0

我以前看過它,但支持包僅適用於Android的v3.0及更高版本。 – LittleFunny 2012-07-17 03:14:47

+2

不......它可以追溯到Android 1.6(SDK 4) – 2012-07-17 03:21:40

+0

哦,我的意思是包中的某些庫。 – LittleFunny 2012-07-18 05:30:26