Spanish [SOLUCIONADO] Activity_Create mas de 1 vez ?

vbmundo

Well-Known Member
Licensed User
Hola amigos,

Depurando una APP uno se encuentra con cosas muy raras...

como puede ser que corriendo el DEBUG (F8) descubra que dentro de un Activity se ejecuta secuencialemente y mas de 1 vez el Activity_Create ?

Es decir.. lo ejecuta, y me ha pasado que inmediatamente lo vuelve a ejecutar ?

Tenia entendido que cuando vuelve (por rotación del movil u otra cosa) se ejecuta el Activity_Resume

Es normal esto ?

Saludos
 

bgsoft

Well-Known Member
Licensed User
Hola Pablo

Teoricamente que te pase eso no es normal, puede que te pase por que hayas estado mucho tiempo trabajando en modo debug y eso hace que haga de todo, te lo digo por que a la que depuro y estoy mucho tiempo modificando y ejecutando, me han pasado cosas muy raras que saliendo del B4A y volviendo a entrar se han arreglado. Lo mejor, si tienes alguna duda es ejecutar en release y ver los logs

Saludos
 

vbmundo

Well-Known Member
Licensed User
Hola Pablo

Teoricamente que te pase eso no es normal, puede que te pase por que hayas estado mucho tiempo trabajando en modo debug y eso hace que haga de todo, te lo digo por que a la que depuro y estoy mucho tiempo modificando y ejecutando, me han pasado cosas muy raras que saliendo del B4A y volviendo a entrar se han arreglado. Lo mejor, si tienes alguna duda es ejecutar en release y ver los logs

Saludos

Seguramente es eso.. no me preocuparia si es así.. pero mi miedo es que lo haga en modo Release y ya en Google Play.

Saludos
 

bgsoft

Well-Known Member
Licensed User
Hola Pablo:

pero mi miedo es que lo haga en modo Release y ya en Google Play

Como te dije nunca me paso eso, y nunca en el foro nadie se ha quejado de eso, podria ser un problema del debug por alguna accion del sincronismo. Piensa que con los miles de usuarios de B4A que hay , algo asi no pasaria desapercibido, asi que no le daria mas importancia.

A veces me ha pasado que he realizado un cambio he guardado el cambio y luego no lo ha ejecutado, pero esto me ha pasado al estar mucho tiempo haciendo cambios. Cuando veo que algo no sale como deberia, paso a release y luego vuelvo a debug, y si persiste , salgo y vuelvo a entrar de B4A.

Saludos
 

vbmundo

Well-Known Member
Licensed User
Hola Pablo:



Como te dije nunca me paso eso, y nunca en el foro nadie se ha quejado de eso, podria ser un problema del debug por alguna accion del sincronismo. Piensa que con los miles de usuarios de B4A que hay , algo asi no pasaria desapercibido, asi que no le daria mas importancia.

A veces me ha pasado que he realizado un cambio he guardado el cambio y luego no lo ha ejecutado, pero esto me ha pasado al estar mucho tiempo haciendo cambios. Cuando veo que algo no sale como deberia, paso a release y luego vuelvo a debug, y si persiste , salgo y vuelvo a entrar de B4A.

Saludos

Si, ademas el BRIDGE no es perfecto, ya he visto que muchas veces tengo que compilar como 5 veces para que arranque nuevamente la aplicación... muchas veces termina de instalar y no la ejecuta, o comienza desde cualquier Activity, o simplemente no hace nada..

Abrazo
 

Cableguy

Expert
Licensed User
Para bien entenderes como funcionan las activities, procura en el forum "activities life-cycle".
 

bgsoft

Well-Known Member
Licensed User
Hola Pablo:

Al final resolviste o pudiste ver el problema de tu consulta?
Es que si así fué, podrias añadir a la cabecera [SOLUCIONADO] y así ayudas a que el foro sea mas activo.

Gracias

Saludos
 

vbmundo

Well-Known Member
Licensed User
Hola Jesús,

No, aun no pude solucionarlo porque no tengo injerencia en el problema.. es decir... ejecuto en debug y al dar F8 una y otra vez veo como luego de ejecutar el CREATE se vuelve a ejecutar...

Pero ahora le he dejado a vistas de que la APP igualmente funciona .

En lugar de SOLUCIONADO, le dejaré un título de CERRADO (si te parece)
 

bgsoft

Well-Known Member
Licensed User
Hola Pablo:

Por que no le pones log para verlos en release? ya se que el propio ide te da logs cuando entra en create, pause, etc . Pero como te dije, en debug y cuando cambias muchas veces, hace cosas raras.

En lugar de SOLUCIONADO, le dejaré un título de CERRADO (si te parece)
Pablo, yo soy otro mas del foro que intenta ayudar, y no soy nadie para decirte que debes poner o no, yo puse una serie de sugerencias hace tiempo en un post para que este foro fuese mas dinámico, al igual que otros hicieron otras sugerencias que llevamos todos (o casi) a cabo. Con lo del cerrado, haz lo que quieras, le hice una sugerencia a alguien con respecto a poner cerrado cuando le dimos una respuesta a su pregunta y me ha insultado a mi (y por ende al foro) , asi que paso de entrar en estos conflictos, por que si encima que intentas ayudar y pierdes tu tiempo te insultan, ya era lo que me faltaba para pasar del foro y que cada cual se busque la vida. Mira, aqui tienes el resultado de pedir que pusiera un solucionado en vez de un cerrado (realmente se le dió la solución) :
https://www.b4x.com/android/forum/t...-tamaño-de-foto-ancho-alto.69726/#post-442829

Saludos
 

vbmundo

Well-Known Member
Licensed User
Ya lo he visto y he respondido...

Con respecto a la pregunta de este POST... pues, evidentemente tiene que ver con el ciclo normal de la APP, pero me ha parecido muy extraño que terminado de correr el Activity_Create, ingresara nuevamente.

Y con respecto al LOG, pues nada.. de un Create se fue a otro Create..

Como no me producia fallos y pude adaptar el código a esto.. es que se me ocurrió lo de CERRADO.

Me parecia engañoso poner [SOLUCIONADO] y que un usuario entrara a leer y no hay solución alguna.

Abrazo !
 

bgsoft

Well-Known Member
Licensed User
Hola

Por que no pruebas una cosa, crea una variable global (long) cuando entres en create pones un log con el tiempo transcurrido (será cero o poco mas), luego cuando acabes el create o en el resume pintas un log con el tiempo transcurrido, y asi podras tener una idea de que esta pasando a nivel de tiempos en los que entra el create varias veces. El log normal no te dice nada mas que entró en create, pero no cuando, de esta forma tendras una idea, y si con esto no lo aclaras, pon el código del create y quita lo que no quieras que veamos pero di que va a hacer, a ver si alguno vemos algo.

Algo asi:

B4X:
Sub Process_Globals
Public Tiempo = DateTime.Now As Long
' ...................
' ...................
' ...................

Sub Activity_Create(FirstTime As Boolean)
' principio del create
log("principio del create - Tiempo transcurrido ms " & (DateTime.Now-Tiempo)) 
' ...................
' ...................
' ...................
' ...................
' ...................
' ...................
' ...................
' ...................
' ...................

' fin del create
log("fin del create - Tiempo transcurrido ms " & (DateTime.Now-Tiempo)) 
End Sub


Sub Activity_Resume
log("inicio de Resume - Tiempo transcurrido ms " & (DateTime.Now-Tiempo))


Saludos
 

bgsoft

Well-Known Member
Licensed User
Hola Pablo, te escribo lo mismo que te he dicho en el foro Inglés:

Ahora que ya lo has resuelto aqui, tendrias que explicar la causa de esa doble entrada en activity create, para que la gente del foro español se aproveche de esa respuesta que te han dado
Y cambiar el [CERRADO] por [SOLUCIONADO]
Seria una buena práctica para que funcione mejor el foro español.

Saludos
 

bgsoft

Well-Known Member
Licensed User
Ahh, y la próxima vez plantea la pregunta igual que en el foro inglés poniendo el código (en el caso que lo pongas) y así podremos darte una mejor respuesta a tu problema, si a ellos le das mas pista es mas facil resolverlo :D .
Al final la gente nueva del foro pensará que no podemos entre todos resolver la mayoria de problemas, y a veces es por que en el foro inglés exponemos mas y mejor nuestros problemas ;)

Esto no es nada contra ti, lo he echo otras veces (yo y otros del foro) cuando alguien ha echo lo mismo, acuerdate de cierto amigo hace poco que nos insultó a todos y tu tambien interveniste.

Saludos
 

vbmundo

Well-Known Member
Licensed User
Claro Jesus,

Antes que nada debo aclarar algo... cuando caigo en el foro en Ingles para resolver algo es porque ahi se encuentra ni mas ni menos que el creador del Software... si el no lo puede resolver ., quien puede ?

El tema de la doble entrada a CREATE, se debía a que yo forzaba la orientación del movil con esta instrucción

Telefono.SetScreenOrientation(1)

eso fuerza a ejecutar nuevamente el SUB Activity_Create

La solución fue incluir en el Manifest el seteo de que única orientación deben soportar ciertos Activitys.

Actualmente he puesto estas 3 lineas en mi Manifest

B4X:
SetActivityAttribute(ResultadoSELECT, android:screenOrientation, "landscape")
SetActivityAttribute(AddField, android:screenOrientation, "portrait")
SetActivityAttribute(INDICES, android:screenOrientation, "portrait")

Y funciona todo perfecto

Saludos
 

bgsoft

Well-Known Member
Licensed User
Hola Pablo:

Antes que nada debo aclarar algo... cuando caigo en el foro en Ingles para resolver algo es porque ahi se encuentra ni mas ni menos que el creador del Software... si el no lo puede resolver ., quien puede ?

Yo no te recrimino que preguntes en el foro inglés, ademas, es lo que tu dices, si Erel no te da la solución será muy dificil que te la de otro siempre que sea algo relacionado con VBX.

Mi única queja era que en el foro inglés habias dado mas explicaciones que aqui, por lo tanto era mas fácil darte una solución, y por otro lado te pedí que compartieras con este foro la solución ya que aqui también hiciste la misma pregunta, de esa forma nos beneficiamos todos ya que alguien que tenga tu mismo problema sabrá como resolverlo, asi que te agradezco que lo hayas echo.

Saludos
 

rscheel

Well-Known Member
Licensed User
Primero que nada, tienes que tener en claro que cuando rotas la pantalla se crea nuevamente el activity en b4a o android studio es lo mismo, para mantener los datos acá puedes usar variables Process_Globals o usar la librería statemanager que es la que recomienda erel al usar una aplicación con rotación.

Actualmente con las nuevas versiones de android studio no tienes que generar código extra o usar librerías extras, ya lo incluye de forma nativa.

No le des tantas vueltas si te crea el activity nuevamente Android es así, esto no es iOS.
 

vbmundo

Well-Known Member
Licensed User
Si lo sé... en muchos casos lo tomé con resignación... porque en definitiva B4X se ha adaptado a lo que Google ha querido hacer con Android.

Saludos
 
Top