2011-07-20 11 views
7

¿Cuál es el mejor enfoque desde la perspectiva del rendimiento para mostrar un ListView con contactos y sus números de teléfono?Mejor práctica para mostrar los contactos de android + números de teléfono

  • Uso CursorAdapter con el cursor contactos y hacer la consulta números de teléfono cuando Bindview se invoca para cada fila
  • copiar todos los contactos y números de teléfono a una matriz en memoria en un subproceso de fondo y después se les muestran con un ArrayAdapter.
  • ¿Otras soluciones?

Respuesta

1

En mi opinión, una solución de mezcla debería ser mejor. ¿Por qué esto? Debido a que usted no sabe o se supone que en la mayoría de los contextos no puede saber cómo y cuántos contactos su aplicación necesitará enumerar. También cuántos contactos están almacenados en el teléfono. Si conocemos ambas respuestas, seguramente podemos tomar la solución de mayor aproximación.

Así que le sugiero que primero traiga un número de arreglo de contactos usando una matriz en memoria en una cadena de fondo, por ejemplo, los primeros 20. También si considera que su aplicación realizará más de una solicitud a este servicio. .será genial usar una especie de almacenamiento en caché. El peor enfoque debería ser llamar una y otra vez al servicio de contactos. Luego, para una solicitud de contacto # 21 puede traer los siguientes 20 y así sucesivamente.

Para que pueda utilizar las ventajas de ambos mundos y minimizar las desventajas también. Siempre depende de la aplicación y el contexto del que estamos hablando.

1

Creo que esto dependerá de tres factores:

  1. ¿Cuántos contactos estamos hablando aquí?
  2. ¿Cuánto tiempo lleva cargar cada contacto? (Por ejemplo, ¿tiene una vista muy complicada que necesita ser inflada o busca imágenes de contacto/etc que requiera alguna E/S de red?)
  3. ¿Cuántos contactos se muestran al usuario a la vez?

Su solución se podría adaptarse a la mayoría de los casos, sin embargo la segunda solución ofrece algunas ventajas:

Solución 1:

Ventaja:

  1. retrasadas inflación en un " ver sobre la marcha "puede funcionar bien cuando es lo suficientemente rápido como para inflar las vistas sin ningún inconveniente de interfaz de usuario notable.

Desventaja:

  1. Si su asociado de contactos con una gran cantidad de datos y requiere algo de complicar la inflación, puede notar un retraso.

  2. Menos flexible y extensible en comparación con la solución 2. Como se explica a continuación.

Solución 2:

Advantage:

  1. Usted tiene el control de todos los pasos, por lo que puede simular fácilmente tan fácil como uno, pero la adición de cosas puede ser más fácil: las búsquedas a través de la memoria completa, la clasificación personalizada a través de la matriz, etc. funcionan mejor cuando tiene todo lo consultado en una matriz que ya está allí. O si desea realizar una carga personalizada más tarde o agregar más datos con respecto a los contactos que requieren más procesamiento (por ejemplo, E/S de red), podría ser un poco más fácil que el adaptador de cursor.

Desventaja:

  1. Ejecución: este no es el modo de libro de texto para hacerlo. hacer las cosas más personalizadas necesitará que manejes bien todos los hilos y que manejes bien la apariencia inicial. Asegúrate de que se escala.

Así que sí, dependiendo de en qué esté trabajando exactamente, elija la adecuada.

0

Creo que CursorAdapter es la mejor solución.

También asegúrese de ver este video http://www.youtube.com/watch?v=wDBM6wVEO70 Habla de las optimizaciones que, en mi opinión, son necesarias para hacer que su lista se desplace sin problemas.

Cuestiones relacionadas