显示android联系人的最佳实践+;电话号码

显示android联系人的最佳实践+;电话号码,android,android-listview,android-contacts,Android,Android Listview,Android Contacts,从性能角度来看,显示包含联系人及其电话号码的列表视图的最佳方法是什么 将CursorAdapter与contacts光标一起使用,并在为每行调用bindView时查询电话号码 将所有联系人和电话号码复制到后台线程中的内存阵列中,然后使用ArrayAdapter显示它们 其他解决方案 在我看来,混合溶液应该更好为什么会这样?因为您不知道或者假设在大多数上下文中,您无法知道应用程序需要列出多少联系人。还可以显示手机中存储了多少联系人。如果我们知道这两个答案,我们当然可以采取最接近的解决方案 因此,

从性能角度来看,显示包含联系人及其电话号码的列表视图的最佳方法是什么

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

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

      因此,我建议您首先在后台线程中使用内存中的数组带来固定数量的联系人,例如前20个。此外,如果您认为您的应用程序将执行一个以上的请求,这项服务。使用一种缓存将非常棒。最糟糕的方法应该是一次又一次地呼叫联系人服务。 然后,如果你要联系21号,你可以带下20号,以此类推


      这样你就可以利用这两个方面的优势,同时将劣势最小化。始终取决于我们讨论的应用程序和上下文。

      我认为这将是一种选择。在哪里可以找到您想要的所有设施…

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

    • 我们这里说的是多少联系人
    • 加载每个联系人需要多少时间?(例如,您是否有一个非常复杂的视图需要膨胀,或者您是否获取需要任何网络I/O的联系人图像等?)
    • 一次向用户显示多少联系人 您的解决方案一适合大多数情况,但第二个解决方案也有一些优点:

      解决方案1:

      优点:

    • 如果“随视图显示”中的延迟视图膨胀足够快,可以在没有任何明显UI故障的情况下膨胀视图,那么它的性能会很好 缺点:

    • 如果您的联系人涉及大量数据,并且需要一些复杂的通货膨胀,您可能会注意到延迟

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

    • 解决方案2:

      优点:

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

    • 执行:这不是教科书中的方法。使事情更加定制将需要您处理好所有线程,并处理好初始外观。确保它的规模
      所以,是的,根据你的具体工作,选择合适的

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

      还要确保你看了这个视频 在我看来,这是使列表平滑滚动所必需的优化