【发布时间】:2011-10-09 14:32:48
【问题描述】:
从性能角度来看,用联系人及其电话号码显示 ListView 的最佳方法是什么?
- 将 CursorAdapter 与联系人光标一起使用,并在为每一行调用 bindView 时查询电话号码
- 将所有联系人和电话号码复制到后台线程中的内存数组中,然后使用 ArrayAdapter 显示它们。
- 其他解决方案?
【问题讨论】:
标签: android android-listview android-contacts
从性能角度来看,用联系人及其电话号码显示 ListView 的最佳方法是什么?
【问题讨论】:
标签: android android-listview android-contacts
在我看来,混合解决方案应该更好。 为什么会这样?因为您不知道或者假设在大多数情况下您不知道您的应用程序需要列出多少联系人以及需要列出多少联系人。还有多少联系人存储在手机中。如果我们知道这两个答案,我们当然可以采取最接近的解决方案。
所以我建议您首先在后台线程中使用内存中的数组引入固定数量的联系人,例如前 20 个。此外,如果您认为您的应用程序将对该服务执行多个请求..使用某种缓存会很棒。最糟糕的方法应该是一次又一次地调用联系人服务。 然后,对于联系人 #21 的请求,您可以带来下一个 20,依此类推。
所以你可以利用这两个世界的优点,同时尽量减少缺点。始终取决于我们正在讨论的应用程序和上下文。
【讨论】:
我认为这取决于三个因素:
虽然第二种解决方案也提供了一些优势,但您的解决方案之一将适合大多数情况:
解决方案 1:
优势:
缺点:
如果您的联系人与大量数据相关联并且需要一些复杂的膨胀,您可能会注意到延迟。
与解决方案 2 相比,灵活性和可扩展性较差。如下所述。
解决方案 2:
优势:
缺点:
所以,是的,根据您的具体工作,选择合适的。
【讨论】:
我认为http://www.higherpass.com/Android/Tutorials/Working-With-Android-Contacts/ 将是一个选项。您可以在哪里找到您想要的所有设施...
【讨论】:
我认为 CursorAdapter 是最好的解决方案。
还请确保您观看此视频http://www.youtube.com/watch?v=wDBM6wVEO70 它谈到了我认为使列表平滑滚动所必需的优化。
【讨论】: