Spanish Tu APK debe incluir recursos de diseño personalizables para densidades de pantalla de tablet comunes

vbmundo

Well-Known Member
Licensed User
Concuerdo contigo, ya que los servicios es bueno usarlos para que la aplicación sincronice datos con un server remoto y en este caso no hay sincronizan de datos.

Para dejarlo mas claro imagínate tener una aplicación que guardes datos sin conexión en el teléfono y haces tu trabajo y cierras la app, el servicio estará corriendo en segundo plano, este cuando detecte que hay conexión sincronizara los datos automáticamente sin que tengas que estar apretando un botón o abrir la app para hacerlo.

Entiendo ahora el verdadero uso de un servicio.

Que deberia utilizar para poder manejar todo GLOBAL ? que es en definitiva mi necesidad.. la de tener un conjunto de SUBS y Variables que puedan ser consultadas por toda la APP sea cual fuera el Activity actual.
 

dar2o3

Active Member
Licensed User
Longtime User
Puedes declarar e inicializar la variable de msmysql en un CodeModule, desde ahí será accesible desde cualquier Activity Module y a partir de ahí usarla donde quieras, teniendo en cuenta (esto me lo imagino, nunca e usado esa librería) que los eventos se dispararán en ese mismo activity.
 

vbmundo

Well-Known Member
Licensed User
Puedes declarar e inicializar la variable de msmysql en un CodeModule, desde ahí será accesible desde cualquier Activity Module y a partir de ahí usarla donde quieras, teniendo en cuenta (esto me lo imagino, nunca e usado esa librería) que los eventos se dispararán en ese mismo activity.

hmmmm... no lo se.. no estaria tan seguro, porque un MODULE tienes que inicializarlo en el Activity.. y si vas a un nuevo Activity volver a inicializarlo.. como si fuera un tipo u objeto...

Yo tengo un .BAS que he llamado FUNCIONES.. y luego en los SUBs tengo que inicializarlo así

B4X:
dim f as funciones

valores=f.cint(valor)

Al inicializar creamos INSTANCIAS de ese objeto, pero yo necesito que sea permanente
 

vbmundo

Well-Known Member
Licensed User
Puedes declarar e inicializar la variable de msmysql en un CodeModule, desde ahí será accesible desde cualquier Activity Module y a partir de ahí usarla donde quieras, teniendo en cuenta (esto me lo imagino, nunca e usado esa librería) que los eventos se dispararán en ese mismo activity.
Fijate en el servicio MYSQL y verás como funciona.

El Servicio tiene los métodos y eventos y se resuelve todo ahí..

la Conexión... la ejecución, la captura de los SQL, las capturas de los errores... y luego esos SUBS interactuan mediante variables globales para saber desde que Activity y modulo fueron llamados, pasandoles a esos ORIGENES los resultados...

B4X:
If actividad="MAIN" and modulo="LeeTablas" then callsub(Main, LeeTablas, data, meta)

la rutina que se ejecuta cuando el SQL devuelve un resultado, recibe de parámetro un LIST y un MAP, que se lo pasa al modulo correspondiente como parámetro.

Esto simplifica mucho las cosas, porque sino habria que copiar y pegar todas las mismas rutinas en cada activity y mantiene los códigos de los activitys mas limpio..

No fue idea mia

Tanto EREL, como DonManfred y Kraus me dijeron que esa es la mejor práctica.

Entienden porque uso ese Service ?

miren esto
https://www.b4x.com/android/forum/t...rary-but-a-fast-one.49728/page-27#post-431711
 

vbmundo

Well-Known Member
Licensed User
Voy a incluir el MATERIAL DESIGN en la versión PRO que estoy haciendo de esta APP.. será un punto mas de distinción entre la FREE y la PRO.

Las diferencias entre versiones tienen que ver con muchas facilidades que se le da al usuario :

  • Poder crear n conexiones y tener todas grabadas en el movil, donde puede seleccionar a que servidor desea conectarse ( en la FREE solo admite 1 Servidor , y si quieres otro tienes que pisar la info del anterior)
  • Poder crear consultas SQL y dejarlas grabadas en tu movil (no el resultado sino la definición de la consulta) entonces tendrias consultas de uso frecuente que las escribes 1 sola vez.
  • La posibilidad no solo de exportar a CSV el resultado, sino que se pueda enviar por email o subir via FTP, Wifi o Bluetooth (tengo aun que aprender como hacer estas cosas)
  • Browsear por las tablas y modificar los datos de una celda o campo (actualmente la FREE solo admite hacerlo mediante ejecución de un SQL tipo INSERT o UPDATE)
 

vbmundo

Well-Known Member
Licensed User
Ya modifique lo del

  • Quitar el .CLOSE de la Base de Datos en MAIN
  • Corregir el nombre de Archivo en la entrada al QUERY.. esa modificación fue la ultima que yo había implementado y por eso antes no daba fallos
  • Quite todos los IF de verificación del MAIN y los simplifiqué en 1 solo.
Gracias amigos..
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Pablo:

Dar2o3 tiene razon en su respuesta:
Puedes declarar e inicializar la variable de msmysql en un CodeModule, desde ahí será accesible desde cualquier Activity Module y a partir de ahí usarla donde quieras, teniendo en cuenta (esto me lo imagino, nunca e usado esa librería) que los eventos se dispararán en ese mismo activity.

hmmmm... no lo se.. no estaria tan seguro, porque un MODULE tienes que inicializarlo en el Activity.. y si vas a un nuevo Activity volver a inicializarlo.. como si fuera un tipo u objeto...
Un módulo de codigo (Code Module), no hace falta inicializarlo, creo que lo has confundido con un módulo de clase (Class Module), de ahi que digas que lo tienes que inicializar desde los diferentes activitys.

Por otro lado andate con mucho cuidado con esto:
porque un MODULE tienes que inicializarlo en el Activity.. y si vas a un nuevo Activity volver a inicializarlo
Si no reseteas cuando cambies de módulos, tendrás un montón de instancias abiertas, y el problema será cuando esas instancias provoquen un evento, que entonces igual estás en main y te llega el evento de otro activity y te volverás loco para darte cuenta.

Si puedes hacer lo que te ha dicho Dar2o3 los futuros problemas de instancias no los tendrás, y si no tienes mas remedio, busca la forma de no tener que inicializar desde diferentes sitios, por experiencia eso a la larga da problemas cuando se meten por medio eventos. Utiliza variables globales y asi podrás acceder a ellas desde cualquier sitio.

Saludos
 

vbmundo

Well-Known Member
Licensed User
Jesus,

Comprendo lo que me dices, pero porque Donmanfred y otros craks del foro me dicen que lo mejor es poner esas rutinas en un Servicio ?

La idea es meter todo en un servicio y desde ahi desparramar los resultados a cada Activity que ha hecho la petición..

Haré las pruebas con la nueva APP que estoy haciendo.. con Super MySQL PRO.. a ver que funcionamiento tiene..

Gracias
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Pablo:

pero porque Donmanfred y otros craks del foro me dicen que lo mejor es poner esas rutinas en un Servicio

Yo no te he dicho que no hagas lo que te han recomendado otros, Yo te dije a raiz de tu cometario con Dar2o3 esto:
Un módulo de codigo (Code Module), no hace falta inicializarlo, creo que lo has confundido con un módulo de clase (Class Module), de ahi que digas que lo tienes que inicializar desde los diferentes activitys.

Y a raiz de tu comentario:
porque un MODULE tienes que inicializarlo en el Activity.. y si vas a un nuevo Activity volver a inicializarlo

Te dije:

Si no reseteas cuando cambies de módulos, tendrás un montón de instancias abiertas, y el problema será cuando esas instancias provoquen un evento, que entonces igual estás en main y te llega el evento de otro activity y te volverás loco para darte cuenta.


En ningún momento te dije que no lo pusieras en un servicio, te dije esto:
Si puedes hacer lo que te ha dicho Dar2o3 los futuros problemas de instancias no los tendrás, y si no tienes mas remedio, busca la forma de no tener que inicializar desde diferentes sitios, por experiencia eso a la larga da problemas cuando se meten por medio eventos. Utiliza variables globales y asi podrás acceder a ellas desde cualquier sitio.

Tendrás que leer mejor lo que te dicen :D, en ningún momento hablé de Modulos de Servicios.

Creo que tendrás que empezar a mirar las diferencias entre un Módulo Servicio, un Módulo de Clase y un Módulo de Código, por que con tus comentarios anteriores de inicializar un Módulo de Código es que has tenido una confusión entre que hace cada uno, y que puedes consultar de cada uno.
Te recomiendo que leas esto:
https://www.b4x.com/android/forum/threads/b4a-beginners-guide.9578/#content
https://www.b4x.com/android/forum/threads/users-guide.15861/#content

Saludos
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Pablo, aunque un poco tarde queria comentarte sobre lo que me dijiste de:

Si amigo, sabes que cuando te puse el POST ya la APP estaba Actualizada y en producción ?

Pero aparentemente hay un segundo proceso, que hace que Google revise estas cosas en las APPs.

Tenia que haber sido mas concreto cuando te dije:
Google tarda unas horas en pasar la aplicación a producción

Me referia con esto a cuando Google la pone a disposición de los usuarios. Tu entras como desarrollador y la subes a producción, y la ves que está puesta, pero para saber cuando realmente esa versión esta disponible a los usuarios, lo mejor es entrar en el Play Store (como usuario normal) y ver que versión está. Tambien hay otras formas, tener un dispositivo con la versión anterior y esperar que google te avise de la actualización, o por código. El problema del dispositivo con la versión anterior, que no siempre google avisa a todos por igual, me ha pasado con algun cliente que me ha avisado que le llegó la actualización, y a mi me llegó al otro dia.

Saludos
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Pablo:

Interesante lo que dices.. yo asumia que cuando ya no estaba en PROCESANDO estaba disponible para todos..

No, te dice que en algunas horas estará disponible, y quizás pueda confundir el echo que tu ya la veas en producción.
Este dato lo he añadido a mi tutorial de:
Como registrarse y subir una aplicación a Google Play, asi los que lo hacen por primera podrán saber este dato, a veces das cosas por echas y no piensas que un aviso se puede interpretar de diferente forma como te ha pasado a ti.

Gracias

Saludos
 
Top