我目前正在使用一個可以容納大量記錄的SQLite代碼庫。它有很多記錄,因此使用LoaderManager
異步檢索Cursor
對象的速度變慢,以CursorAdapter
顯示ListView
。在Android上實現高效的ContentProvider
如果查詢表中有一行更改,則通知LoaderManager
,並檢索新的Cursor
。但是,這似乎效率低下,因爲Cursor
查詢表中的所有行爲ListView
。 GUI未被阻塞,因爲Cursor
加載正在另一個線程中完成,問題在於檢索錶行可能需要一段時間。在顯示新的記錄信息之前,5-10秒可以傳遞一些較慢的電話。
我試圖找到一種方法來高效地檢索行更改,以更新ListViews
的行而無需重新加載所有內容。
我看着我重寫代碼作爲內部ContentProvider
(隱藏SQLiteDatabase
),因爲我已經看到它可以與應用程序的ContentResolver
通過notifyChange()
發出單獨的行更改通知使用。
如果我切換到ContentProvider
,它會像我所假設的那樣高效嗎?在單個記錄更改後,ContentProvider
是否可以發出允許ListView
僅重新裝載行更改信息的事件,而不需要重新查詢所有表信息?
我可以在不重寫的情況下使用'AbstractWindowedCursor'來使用'ContentProvider';或者'AbstractWindowedCursor'需要'ContentProvider'存在? –
不,您可以將它作爲獨立使用遊標,不需要ContentProvider – pskink