为什么 Cursor.requery() 被标记为“已弃用”?

发布于 2024-11-29 21:48:44 字数 332 浏览 1 评论 0原文

Cursor.requery() 是一种非常常见的方法,使用它来刷新 ListView 的内容。但为什么这个方法被标记为“已弃用”呢?我不太清楚 API 文档上的原因。

Cursor.requery() API: http://developer.android.com/reference/android/database/Cursor .html#requery()

谁能进一步解释一下原因吗?谢谢:)

Cursor.requery() is a very common method while using it to refresh a ListView's content. But why is this method marked "deprecated"? I can't understand the reason on the API docs very clearly.

Cursor.requery() API:
http://developer.android.com/reference/android/database/Cursor.html#requery()

Can anyone please explain the reason any further? Thanks:)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

遥远的她 2024-12-06 21:48:44

我相信这样做是因为引入了新的 Loaders API 来简化查询游标异步地。

正如弃用说明所述

不要使用这个。只需请求一个新光标,这样您就可以异步执行此操作,并在新光标返回后更新您的列表视图。

这就是我们应该使用的。

更新

似乎也与 Activity.startManaginCursor 的弃用有关:

startManagingCursor(光标c)
此方法已被弃用。将新的 CursorLoader 类与 LoaderManager 一起使用;这也可以通过 Android 兼容包在旧平台上使用。此方法允许活动根据活动的生命周期为您管理给定 Cursor 的生命周期。也就是说,当 Activity 停止时,它将自动在给定的 Cursor 上调用 deactivate() ,并且当稍后重新启动时,它将为您调用 requery() 。当 Activity 被销毁时,所有托管 Cursors 将自动关闭。如果您的目标是 HONEYCOMB 或更高版本,请考虑使用 LoaderManager,可通过 getLoaderManager() 获得

I believe it was done because new Loaders API was introduced to simplify querying Cursors asynchronously.

As deprecation note says

Don't use this. Just request a new cursor, so you can do this asynchronously and update your list view once the new cursor comes back.

that's what we should be using.

update

It seems that it can also be related to deprecation of Activity.startManaginCursor:

startManagingCursor(Cursor c)
This method is deprecated. Use the new CursorLoader class with LoaderManager instead; this is also available on older platforms through the Android compatibility package. This method allows the activity to take care of managing the given Cursor's lifecycle for you based on the activity's lifecycle. That is, when the activity is stopped it will automatically call deactivate() on the given Cursor, and when it is later restarted it will call requery() for you. When the activity is destroyed, all managed Cursors will be closed automatically. If you are targeting HONEYCOMB or later, consider instead using LoaderManager instead, available via getLoaderManager()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文