显示Android联系人+电话号码的最佳做法

时间:2011-07-20 17:30:15

标签: android android-listview android-contacts

从性能角度来看,显示带有联系人及其电话号码的ListView的最佳方法是什么?

  • 将CursorAdapter与联系人光标一起使用,并在为每行调用bindView时查询电话号码
  • 将所有联系人和电话号码复制到后台线程中的内存数组中,然后使用ArrayAdapter显示它们。
  • 其他解决方案?

4 个答案:

答案 0 :(得分:1)

在我看来,混合解决方案应该更好。 为什么这样?因为您不知道或者假设在大多数情况下您无法了解应用程序需要列出的联系方式和数量。还有手机中存储的联系人数量。如果我们知道这两个答案,我们当然可以采取最多的方法解决方案。

因此,我建议您首先在后台线程中使用内存数组中的固定数量的联系人,例如前20个。此外,如果您认为您的应用程序将对此服务执行多个请求。使用某种缓存会很棒。最糟糕的方法应该是一次又一次地呼叫联系服务。 然后,对于联系#21的请求,您可以接下来20,依此类推。

因此,您可以利用两个世界的优势,并尽量减少缺点。始终取决于我们正在讨论的应用程序和上下文。

答案 1 :(得分:1)

我认为这取决于三个因素:

  1. 我们在这里谈论了多少联系人?
  2. 加载每个联系人需要多长时间? (例如,您是否有一个非常复杂的视图需要膨胀,或者您是否需要获取需要任何网络I / O的联系人图像等?)
  3. 一次向用户显示多少联系人?
  4. 您的解决方案适合大多数情况,尽管第二种解决方案也具有一些优势:

    解决方案1:

    优势:

    1. “视图中的延迟视图通胀”可以很好地执行,因为它足够快,可以在没有任何明显的UI故障的情况下给视图充气。
    2. 缺点:

      1. 如果您的联系人与大量数据相关联并且需要一些复杂的通货膨胀,您可能会发现延迟。

      2. 与解决方案2相比,灵活性和可扩展性较差。如下所述。

      3. 解决方案2:

        优势:

        1. 您可以控制所有步骤,因此您可以轻松地模拟它,但添加内容可能更容易:搜索整个内存,通过数组自定义排序等等。当您拥有所有内容时,它们可以更好地工作查询已经存在的数组。或者,如果您想稍后进行自定义加载,或者添加一些有关需要更多处理(例如网络I / O)的联系人的数据,则可能比游标适配器稍微容易一些。
        2. 缺点:

          1. 执行:这不是教科书的方式。使事情更加自定义将需要您很好地处理所有线程并很好地处理初始外观。确保它可以扩展。
          2. 所以,根据你究竟在做什么,选择合适的一个。

答案 2 :(得分:0)

我认为http://www.higherpass.com/Android/Tutorials/Working-With-Android-Contacts/将是一种选择。在哪里可以找到您想要的所有设施......

答案 3 :(得分:0)

我认为CursorAdapter是最好的解决方案。

另请确保观看此视频http://www.youtube.com/watch?v=wDBM6wVEO70 它讨论了我认为有必要使列表顺利滚动的优化。