2010-04-07 83 views

回答

72

​​將使用ContentResolver的的查詢()。所不同的是 與​​活動將保持對它的引用您的 光標並關閉它需要的時候(在onDestroy()例如)。如果 你自己做query(),你必須管理光標作爲 敏感的資源。如果你忘了,例如,以close()onDestroy(),你會泄漏底層資源(logcat中會警告你 一下吧。)

要查詢的內容提供者,您可以使用該ContentResolver.query()方法或Activity.managedQuery()方法。兩種方法都採用同一組參數,並且都返回一個Cursor對象。但是,​​會導致該活動管理光標的生命週期。託管Cursor處理所有細節,例如活動暫停時自行卸載,並在活動重新啓動時重新進行自我檢查。您可以通過致電Activity.startManagingCursor()來要求活動開始管理非託管光標對象。

更新:

managedQuery現在已被棄用(由於Android 3.0)。

+1

@ Pentium10:好極了!和使用android.provider.MediaStore.Images.Media.query()和context.getContentResolver.query()之間的區別? – Macarse 2010-04-07 20:25:38

+0

對不起,我不知道。也許沒有。 – Pentium10 2010-04-07 21:05:28

+0

來到@ Macarse的問題:( – MBillau 2014-01-23 20:24:31