gpt4 book ai didi

android - 内容提供商 : wrap with a static facade?

转载 作者:行者123 更新时间:2023-11-30 04:44:18 25 4
gpt4 key购买 nike

我正在经历一些设计困境,我一直以 Android 2.3.3 为目标,并且有一个 ContentProvider 的自定义实现。然后我有一个静态方法类来抽象内容提供者——根据我的查询为我提供代表每个实体(行)的对象。有一段时间我对这样的工作感到很舒服,直到我开始想在很多地方使用整个集合,以执行“ HitTest ”和绘制到屏幕上。然后让我的对象表示保持最新让我很头疼,此时我决定我需要退后一步并重新考虑将它带到哪里。

正如我所说,我目前正在使用 2.3.3,并意识到在 3.0 中 CursorLoader 克服了我遇到的许多问题。不过我仍然需要支持智能手机,所以除非有反向移植,否则我无法做到这一点。

作为一个临时解决方案,我开始注册 notifyChange 监听器,以便我可以使用我的原始查询重建一个集合,但这让我感到非常 CPU 密集并且可能很慢。我还没有决定是否应该回滚使用我的静态外观,而是使用来自 Activity 的现已过时的 managedQuery 调用。

因此我有两个问题:

1) 是否有更好的方法来避免处理基于 contentProvider 的集合的问题?

2) 对于在 Activity 中使用原始游标,您有什么建议吗?我应该用它们制作对象还是按原样使用光标?我当然觉得在执行查询时它们应该在 AsynTask 中,但在那之后我可以在任何地方使用它们吗?

最佳答案

好吧,我做出了一个决定,它工作可靠。

1) Is there a preferable way to avoid the issues with working against a collection based around a ContentProvider?

我认为我采取的方法是正确的;在我的情况下,最好创建一个缓存而不是为 ContentProvider 维护一个游标(托管或非托管);这使我能够重用方法并减少需要测试的代码量。 NotifyChange 监听器在 3.0+ 之前很重要,这意味着我应该保证调用 NotifyChange - 集中所有这些代码的另一个论点,以便它确实在预期时触发更改。

2) Have you any advice on working with raw cursors in an activity? Should I be making objects out of them or working with the cursor as-is? I certainly feel they should be in an AsyncTask while performing the query, but after that can I use them anywhere?

在我的用例中,我决定考虑我计划创建什么 - 避免不必要的工作,关于返回不必要的行和字段以及可能创建不必要的对象。如果我想创建条目名称和条目 ID 的映射,那么我不应该也获取所有其他字段。从集合中抽象是好的,但它必须是轻量级的,并且要考虑数据的使用方式——无论是一次性的还是可以重复使用的。重要的是它是为了性能而不是完整性而编写的。

关于android - 内容提供商 : wrap with a static facade?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5341203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com