2010-02-14 10 views
8

Tengo un campo de texto para filtrar la acción de los clientes en un dispositivo móvil. Me pregunto si debería esperar unos milisegundos antes de iniciar mi código cuando el usuario escribió menos de 3 caracteres, y solo ejecutar el código si el texto es más largo o igual que 3 caracteres.¿Vale la pena esperar un par de milisegundos en un evento TextChanged?

El código ejecutado lleva más tiempo (sql como la sintaxis en una base de datos más grande) y el usuario ve hang-outs en la vista de lista.

¿Qué opinas?

Respuesta

5

Retrasar las consultas SQL en eventos modificados por texto es una buena idea. Usamos esta técnica en Android. También siempre nos aseguramos de cancelar cualquier consulta previa. Por ejemplo, si el usuario escribe "ab", y publicamos un mensaje para iniciar una consulta después de que el usuario marcó "a", cancelamos ese mensaje cuando el usuario escribe "b".

+0

¿puedes compartir el código? – Pentium10

1

Si el usuario ve hang-outs cuando se inicia su código, no lo lanzaría de inmediato.

Suponiendo que la consulta se ejecute sobre la marcha en función de la entrada del usuario, esperaría hasta que el usuario escriba suficientes caracteres para procesar una consulta más liviana y no empantanaría la interfaz de usuario. Especialmente usando la sintaxis %LIKE%, menos caracteres con los que tenga que trabajar significa una consulta más grande y un tiempo de espera más largo para el usuario.

0

Intentaría utilizar el mismo enfoque que las aplicaciones nativas de Android ya que el código fuente está disponible. Por ejemplo Contacts.

Compruebe lo que hacen cuando busca un contacto.

+0

No entiendo lo que hacen, parece complicado para mí. ¿Puedes explicarlo en palabras? – Pentium10

+0

No revisé lo que hacen. Te acabo de decir dónde podrías buscar. – Macarse

+0

Contactos realiza la consulta en otro hilo. Inicia la consulta tan pronto como obtiene la primera entrada, y sigue ejecutando la consulta con la mayor frecuencia posible hasta que alcanza lo que el usuario ha tipeado hasta ahora. Esto le permite responder tanto a letras individuales como a un lote de letras que se escriben más rápido que las consultas. – hackbod

0

Algunas aplicaciones también realizan validación de entradas cuando el foco se mueve a otro campo de entrada y no verifican la entrada mientras se está editando. No estoy seguro de si es algo bueno o no (me parece un poco confuso), pero definitivamente es una forma de resolver el problema ...

0

En el iPhone si ve lag mientras el usuario escribe después de iniciar una búsqueda, probablemente deba mover la operación de consulta a un hilo de fondo, con la capacidad de cancelar búsquedas antiguas como mencionó RG.

Puede tener sentido retrasar ligeramente los primeros caracteres, pero no tener más retrasos: después de tres o cuatro, probablemente tenga suficientes caracteres para comenzar a devolver resultados significativos.