Spanish Gran delay entre el click en un boton y cuando realmente entra al evento _Click

vbmundo

Well-Known Member
Licensed User
Hola amigos

Yo sigo intentando comprender algunas cosas de B4A, por venir de otros lenguajes que me han mal acostumbrado, aunque reconozco que B4A tiene cosas increíbles que otros no tienen.

Una de las cosas que me tienen preocupado es el enorme delay que veo a veces entre que hago click en un botón y se ejecuta la primera instrucción del evento CLICK.

El problema es que visualmente., el Boton hace el efecto del click,... pero luego el usuario se queda varios segundos esperando.. y basta con que yo corra el Debug, con un BreakPoint en la primera instrucción del Evento Click, para ver que demora mucho tiempo.

Como es eso ?

Y si en lugar de una aplicación "Normal" fuera un juego, donde depende de tu destreza al hacer clicks en botones para seguir vivo ?

Espero que mis amigos puedan darme alguna pista., porque no lo entiendo.

Gracias
 

dar2o3

Active Member
Licensed User
Longtime User
Los procesadores 486 corrían a velocidades de 16 Mhz. 1 hz significa que el reloj del procesador puede hacer 1 ciclo por segundo, 1 Mhz es 1,000,000 (un millón) de ciclos por segundo, 1 Ghz son 1,000,000,000 (mil millones) de ciclos por segundo.

Entonces, un ciclo sin energía eléctrica es un cero (0), y un ciclo con energía eléctrica es un uno (1). Un procesador de 3.6 Ghz de un solo núcleo (single core) puede manejar 3,600,000,000 (tres mil seiscientos millones) de ciclos por segundo.

Los teléfonos móviles hoy en día ya són cuad-core u octa-core a 1.8 o 2 Ghz, con todo esto, eres capaz de distinguir el tiempo que transcurre desde que le das al click y salta el evento? ;)

Ahora en serio, a mi hasta en modo debug siempre a sido instantáneo, es más ahora estoy haciendo una app que trabaja contra un servidor que también estoy haciendo en b4j, cuando pulso un botón de guardar datos en la app, el código del servidor se ejecuta de manera instantánea.

Tu estás diciendo que tus usuarios en alguna ocasión esperan vários segundos, pero eso será debido a las consultas que le hagas al servidor, bd, ftp o lo que hagas.
 

vbmundo

Well-Known Member
Licensed User
Los procesadores 486 corrían a velocidades de 16 Mhz. 1 hz significa que el reloj del procesador puede hacer 1 ciclo por segundo, 1 Mhz es 1,000,000 (un millón) de ciclos por segundo, 1 Ghz son 1,000,000,000 (mil millones) de ciclos por segundo.

Entonces, un ciclo sin energía eléctrica es un cero (0), y un ciclo con energía eléctrica es un uno (1). Un procesador de 3.6 Ghz de un solo núcleo (single core) puede manejar 3,600,000,000 (tres mil seiscientos millones) de ciclos por segundo.

Los teléfonos móviles hoy en día ya són cuad-core u octa-core a 1.8 o 2 Ghz, con todo esto, eres capaz de distinguir el tiempo que transcurre desde que le das al click y salta el evento? ;)

Ahora en serio, a mi hasta en modo debug siempre a sido instantáneo, es más ahora estoy haciendo una app que trabaja contra un servidor que también estoy haciendo en b4j, cuando pulso un botón de guardar datos en la app, el código del servidor se ejecuta de manera instantánea.

Tu estás diciendo que tus usuarios en alguna ocasión esperan vários segundos, pero eso será debido a las consultas que le hagas al servidor, bd, ftp o lo que hagas.

????

Amigo, has leído mi planteo ?

No estoy hablando de conexiones a un servidor, ni lecturas, ni nada de eso.

Estoy hablando del tiempo que veo transcurre entre posar el dedo en un botón y que se empiece a ejecutar la primera linea del evento CLICK...

Mi Activity MAIN, carga datos en varios TEXTBOX y luego el usuario hace click en el boton CONECTAR... yo mismo le hago click... pero hasta que entra al Evento CLICK pasan como 5 o 6 segundos..
 

dar2o3

Active Member
Licensed User
Longtime User
He leido tu planteamiento con bastante atención, no e leido nunca nada en el foro sobre ese problema, yo tampoco lo e sufrido nunca, hay ejemplos de juegos echos con b4a que responden perfectamente a los clicks del usuario...
Pudiera ser alguna incompatibilidad de la versión de b4a que estas utilizando con la version de java que tengas instalada? Por poner una idea encima del tapete...
 

JordiCP

Expert
Licensed User
Longtime User
Dos posibles causas que se me ocurren para el comportamiento observado son

> Si estás en modo debug, es posible que lo que va lento es la sincronización con el IDE en el breakpoint, y lo veas tarde. Quizás esto es más posible en modo wifi que usb
> Tu código está procesando muchos otros eventos en background y el evento click se lanza cuando puede. Pero lo veo poco probable

La manera de comprobar la velocidad "real" sería por ejemplo que la primera linea de código del evento click cambie el texto de otro boton, label, etc. Y después, por si acaso, haría un invalidate sobre el objeto escogido. Sin breakpoints ni nada.

Si de este modo va lento, debe haber algo muy pero que muy gordo en background. Apaga el móvil y sal corriendo ;)
 

dar2o3

Active Member
Licensed User
Longtime User
Yo siempre hago debuggeo en modo wifi, nunca me a sido apreciable el tiempo de respuesta, según comenta vbmundo no solo le pasa a el si no tambien a sus usuarios...
 

JordiCP

Expert
Licensed User
Longtime User
Entonces me inclino por el monstruo en background que está consumiendo recursos de la user interface
 

vbmundo

Well-Known Member
Licensed User
Yo siempre hago debuggeo en modo wifi, nunca me a sido apreciable el tiempo de respuesta, según comenta vbmundo no solo le pasa a el si no tambien a sus usuarios...

No amigo, esto solo me pasa a mí debugeando..

Es mejor hacerlo via USB ? no vi la opción

Y amigo JordiCP, lo que hago es poner un punto de interrupción como primera instrucción en el evento Click.. por eso me doy cuenta de lo que demora.

Saludos y Gracias
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Pablo:

Aparte de poner en practica lo que te han comentado los otros dos compañeros, si tienes un Doevents quitalo, por que eso hace que el procesador vaya a atender al resto de cosas que está en el stack y de ahi el retraso.

Tambien puedes poner en el inicio del click que te guarde el tiempo actual, y despues de tu primera instrucción escribe en un log el tiempo que ha tardado, pero esto hazlo en release, por que en debug como bien dice Jordi puedes tener atrasos por la sincronización.

Y otra cosa que puedes hacer, es poner log en todos los subs que tengas que puedan estar en marcha, de esa forma verás que está haciendo el flujo del programa, cosa que en debug es dificil seguir por el tema de la sincronización. Y si ya quieres hacerlo mejor, esa variable que te guarda el tiempo hazla global, y luego en las entradas de los sub pon el tiempo que ha transcurrido. Tenias que haber aprendido :D de lo que te pasó con que entraba antes el Activity.Resume en el post del tutorial de módulos de servicios, y te hice un pequeño programa para ver el comportamiento y darte los tiempos.

Y si todo eso falla, como dice Jordi, es que tienes un monstruo de background que te come todos los recursos. A mi esto que te pasa no me ha ocurrido nunca


Saludos
 

dar2o3

Active Member
Licensed User
Longtime User
Creo que vbmundo se refiere al tiempo que tarda desde que pressiona en botón en pantalla hasta que salta el evento click (antes de ejecutar ninguna sentencia) dice que en ocasiones le tarda 5 o 6 segundos, increiblebleble.
 

vbmundo

Well-Known Member
Licensed User
Creo que vbmundo se refiere al tiempo que tarda desde que pressiona en botón en pantalla hasta que salta el evento click (antes de ejecutar ninguna sentencia) dice que en ocasiones le tarda 5 o 6 segundos, increiblebleble.

Esa es mi consulta... sin que haya otras cosas corriendo me demora eso, pero se me ocurre que mi movil es una porqueria.. jejeje..y siempre me va lento en todo... en cualquier APP instalada que yo tenga le hago click y demora horrores en abrir.

Voy a probar todo esto en la Tablet para sacarme las dudas.

Gracias amigo y gracias a Jesús también.
 

rscheel

Well-Known Member
Licensed User
Longtime User
Estimado preguntas,

Que versión de B4A esta usando?

Que teléfono esta usando, con que versión de android?

Que versión de SDK mínimo y máximo esta usando?

A actualizado alguna ves la SDK de android?

Como le comentan mas arriba jamas me a sucedido lo que comenta, es bastante raro pueden muchos factores los que producen la lentitud del evento.
 

vbmundo

Well-Known Member
Licensed User
Estimado preguntas,

Que versión de B4A esta usando?

Que teléfono esta usando, con que versión de android?

Que versión de SDK mínimo y máximo esta usando?

A actualizado alguna ves la SDK de android?

Como le comentan mas arriba jamas me a sucedido lo que comenta, es bastante raro pueden muchos factores los que producen la lentitud del evento.

B4A versión 5.8 y tengo para instalar la 6.0
Movil Samsung Galaxy Fame Lite (una porqueria)
Android 4.1.2 API level 16 (Java VM . Dalvik 1.6.0)
En cuanto al SDK.... Google Play me dice que es compatible con el 100 % de los moviles.

Como he instalado todo hace poco mas de 1 mes (tiempo del que soy usuario de B4A) supongo que es todo muy nuevo.

Saludos
 

rscheel

Well-Known Member
Licensed User
Longtime User
B4A versión 5.8 y tengo para instalar la 6.0
Movil Samsung Galaxy Fame Lite (una porqueria)
Android 4.1.2 API level 16 (Java VM . Dalvik 1.6.0)
En cuanto al SDK.... Google Play me dice que es compatible con el 100 % de los moviles.

Como he instalado todo hace poco mas de 1 mes (tiempo del que soy usuario de B4A) supongo que es todo muy nuevo.

Saludos

Hace bastante poco la sdk de android se actualizo bastante por Erel lanzo b4a v6 simplifica bastante las cosas, yo por mi parte uso la misma SDK que instala Android Studio y la mantengo actualizada por ese medio ya que igual programo en Android Studio y ojo que la mayoría de las librerías de b4a estan optimizadas y actualizadas para trabajar sobre la versión de Android 4.4 Kit Kat.

Una de mis aplicaciones tuvo problemas al ser instalada en Android Jelly Bean, por eso yo a las empresas que usan las app que he desarrollado les recomiendo que usen Android 4.4 hacia arriba, tienes que ser consciente en pensar al momento de desarrollar una app que Android se esta actualizando bastante seguido y que las personas que utilicen tu app siempre que adquieran un nuevo móvil vendrá con una versión de android actualizada hoy en día mínimo android 5.1.1.

Así que te recomiendo que cuando desarrolles aplicaciones trata de probarlas en un dispositivo con una versión de android mas reciente, no digo que sea un galaxy s7 o un LG G3, ármate de un motorola G o E que son bastante económicos y tienen buen soporte en actualizaciones de android.

Siempre que crees una aplicación piensa en la persona que la va a usar no en ti.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

Y redundando en lo que dice Rscheel, te aconsejo mucho que le hagas caso y compres un dispositivo a poder ser con la ultima version de android, mi filosofia es, ya que me dedico a esto tengo que tener los medios suficientes para poder hacerlo bien, ya se que es estar haciendo inversiones en cortos plazos, pero es lo que tiene programar para dispositivos móviles. O eso, o tendras un montón de quejas si subes la App al Play Store de gente que no le funciona y te puntua bajo.

Por ahí verás varios post mios de cosas que fallaron en Android 5 y 6, y la unica forma de ver realmente por que falla es teniendo el dispositivo con esa versión y debuguearlo, incluso he tenido que arreglar problemas concretos para algunos modelos de LG, la suerte en estos casos fué que tambien disponia de uno de ellos. Y a veces no estoy hablando de errores muy grandes, no recuerdo si fue en 5 o 6, por no asignar un string a cadena nula el programa daba error, cuando en versiones anteriores de Android no lo hacia. Normalmente cuando descubro algo de esto pongo en el título
[Información] , y asi el foro puede saber que no es una pregunta, rscheel recientemente ha puesto un articulo interesante sobre Runtime Permissions

Como ya te dije en otro post, bienvenido al mundo Android :D , teniendo un dispositivo actual, si el fabricante llega un momento que no te actualiza Android, siempre puedes mirar en foros de Android y ponerle una ROM "cocinada" con la ultima versión.

Saludos
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Pablo:

Supiste saber por que te pasaba eso? seria interesante que lo compartieras con el foro.

Saludos
 

vbmundo

Well-Known Member
Licensed User
Les pido mil disculpas a ambos, se me ha pasado este POST, y con tantas alertas de nuevas respuestas se ve que la he salteado.

Concretamente estaba pensando en cambiar mi equipo por uno con 4G y Android de ultima generación.. veremos que consigo, porque aquí en Argentina, todo sale mucho mas caro (relacionado a los salarios) que en el resto del mundo.

Pero la pregunta que me hago es la siguiente... casi siempre los problemas de "Compatibildad" son para atrás... muy pocas veces hacia adelante..

Es mas probable que programando para Android 5.0 mi APP no funcione correctamente en versiones 4.xx , que si programo en 4.xx sea corrida en moviles con 5.0

A no ser que en el mundo Android sea todo a la inversa.

Aun no pude resolver eso.. aunque noto que mi APP corre como bala ahora.. creo que es mas un delay por cuestiones externas que por algo relacionado al B4A.

Veremos.. aun no tengo en claro porque se comporta tan erraticamente

Le envio un saludo a los dos.
 

vbmundo

Well-Known Member
Licensed User
acabo de comprar este movil para reemplazar la Fucking Shit que tengo ..

Nunca mas SAMSUNG

Me compre esto
http://movil.uno/huawei-y6-smartphone-android-de-gama-baja-opinion/

Viene con ANDROID 5.1

Hoy me dieron un dato Impactante en una sucursal de MOVISTAR, los SAMSUNG vienen con un fallo de software, primero empiezan a ponerse muy lentos (el mio es insoportablemente lento) , luego empiezan a mostrar pantallas blancas (el mio desde hace 2 dias me esta haciendo este fallo intermitente) y luego (segun me han dicho) comienzan a tener mensajes de Error de PlayStore.. cuando eso pasa.. olvidalo.. lo tienes que llevar a un técnico y todo se fastidia.

Saludos amigos !!
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Buenos dias Pablo:

Pero la pregunta que me hago es la siguiente... casi siempre los problemas de "Compatibildad" son para atrás... muy pocas veces hacia adelante..

A menos que emplees cosas que la versión de Android no las contemple, la compatibilidad hacia atras pocas veces la tendrás, por ejemplo: antes podias por código parar datos, gps, etc, actualmente no, Google "por politica de seguridad" :p los fué quitando, esto quiere decir que si tu tienes un dispositivo movil con una versión antigua que podias parar datos, al subir de versión de Android ya no se puede, y en el mejor de los casos no te dirá nada y en el peor se detendrá. Yo en aplicaciones cliente uso Android 4.4 , y no tengo ningún problema, subir a 5 ahi empiezan algunos.
La compatibilidad hacia arriba la verás en algunos post que he puesto comentarios, como los doevents, las cadena vacia, etc, a veces Android mete alguna "empeora" :D , en sus versiones que hace que te vuelvas loco en encontrar el fallo y si la tienes en el Play Store a correr y corregirlas y subirlas por que empezarás a tener comentarios de que no va, se para....

Nunca mas SAMSUNG

Hoy me dieron un dato Impactante en una sucursal de MOVISTAR, los SAMSUNG vienen con un fallo de software, primero empiezan a ponerse muy lentos (el mio es insoportablemente lento) , luego empiezan a mostrar pantallas blancas (el mio desde hace 2 dias me esta haciendo este fallo intermitente) y luego (segun me han dicho) comienzan a tener mensajes de Error de PlayStore.. cuando eso pasa.. olvidalo.. lo tienes que llevar a un técnico y todo se fastidia.

Llevo desde hace un monton de años con samsung, ya programaba en ellos en windows mobile :rolleyes:, NUNCA he tenido ningún problema con ninguno de ellos y he pasado por toda la gama de los S1.. S6 , cuando hago una aplicación cliente que incluye tablet pongo una samsung, por que es lo único que no me da problemas. A veces cuando he querido consultar algo a samsung, les he llamado, y si el tecnico estaba ocupado me han llamado ellos al movil (celular) , eso no lo he tenido con ningún servicio técnico, y el trato y la solución a la consulta inmejorable.
Movistart, igual los moviles que ellos te venden tienen un bug en la rom y les quieren echar las culpas a samsung, podria ser que fuera un fallo de samsung, pero creo que lo corregirian en muy poco tiempo. Aqui en España no he oido a nadie con ese fallo que estás teniendo, podria ser un virus o que como bien sabes las ROMs dependen de que pais y de que operadora (si lo compras a traves de ellas) son diferentes. Yo por eso siempre compro dispositivos móviles libres, busco en ebay y amazon y al mas bajo de precio con respecto al modelo que busco lo compro. Antes lo hacia a traves de la operadora de telefono que tenia, pero te das cuenta que a la larga pierdes dinero. Asi que eso que te han dicho en movistar (aqui la llaman vomistar antes era teléfonica y les decian timofonica) mas bien creo que sea un problema de los dispositivos que ellos venden. Ya que el tuyo lo das por perdido, haz una prueba facil, ponlo una rom "cocinada" y prueba, seguro que se le iran todos los problema. Estos son de confianza: http://forum.xda-developers.com, pero eso si, antes de cambiar la rom, comprueba que sea para tu versión de movil exacta o lo dejaras peor o muerto. Poner una nueva rom es facil y rápido, yo lo hago con Odin y nunca me dió problemas.

Saludos
 
Top