jel*_*lgh 13 sqlite performance android android-contentprovider android-cursoradapter
我和我的Android团队有问题.我们有一个应用程序,可以显示用户的联系簿,并提供扩展信息.
当前设置
我们的应用程序读取Android OS的联系人提供程序.将此信息发送到我们的服务器,为我们计算几个必要的字段.稍后我们的应用程序会提取此信息,并将此信息保存在SQLite数据库中.我们在数据库中最终得到的是两个表格.一个包含所有数字和服务器为我们计算的所有额外信息.另一个表是所有联系人(一个联系人可以有多个号码).此联系人表仅为性能而创建; 我们可以让Cursor在为用户呈现联系簿时选择CursorAdapter中此Contacts表中的所有行.因此,在向用户呈现联系簿时,我们只需要从我们自己的SQLite数据库中读取并且只需要读取一个表(例如,没有JOIN).
主要问题
有很多同步正在进行中.由于数据是重复的,我们需要检查添加/更改/删除,并需要同步所有的fing时间.此外,当我们现在要更改表示层中的特定内容时,我们需要更改Contacts表以包含此特定信息.
我们的优先事项
1st:向用户出示联系簿时的表现.
第二:代码可维护性.
因此,不要评论"不要重复数据 - 它是所有问题的根源".对我们来说,更重要的是用户没有性能问题,因为开发人员不得不花费额外的时间来编写良好的同步算法.
解决方案?
我不知道为什么,但我一直认为CursorAdapter(读取一个表中的所有行)的表现要比带有List对象(保存在内存中)的ArrayAdapter好得多.谁知道这是真的吗?因为一个能够帮助我们至少一半的解决方案是在启动时加入Contacts Provider(本地联系簿)和我们的扩展信息,将其保存在内存列表中并使用ArrayAdapter显示.
创建自己的内容提供商?我对创建自己的内容提供商知之甚少.任何人都试图创建一个内容提供者来扩展本地联系簿的信息并加入这些内容.也许与这个接口的实现:ContactsContract.DataColumnsWithJoins?有人试过类似的东西?在CursorAdapter中显示此信息时的性能如何?
请询问我可能忘记的任何更多信息,我会更新问题!
非常感谢所有有用的提示和解决方案!
小智 1
我得出的结论(在我的应用程序 JReader 上工作,它很大程度上依赖于快速数据库操作)Android 中的 SQLite 与其他平台一样快,但存在一些 Android 特定问题。关于数据库性能和您提出的问题的一些建议:
根据我的经验,我遇到过数据库性能非常差的情况,但最终我总是设法调整代码,结果会获得 10-100 倍的性能提升。因此,继续分析您的数据库代码,您一定会达到所需的性能。
| 归档时间: |
|
| 查看次数: |
739 次 |
| 最近记录: |