我目前正在使用一个可以容纳大量记录的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