Spanish Pequeñas dudas de B4A

bratislava21

New Member
Bueno, lo que pasa esque tengo un problema con "ExitApplication" que creo que es para cerrar la aplicación pero si entro a la app y no abro nada y le doy a un botón que puse para cerrarla si cierra, en cambio si empiezo a abrir pantallas y me regreso al menú donde está el botón para salir y lo oprimo no sale sino que se regresa a una pantalla cualquiera y tambien me gustaría saber como ponerle para que la app no se rote, si me pueden ayudar se los agradecería mucho, Dios los bendiga.
 
D

Deleted member 30048

Guest
Hola, lo que te ocurre es que al abrir una pantalla creas una actividad nueva y nunca la cierras, por eso cuando cierras la actividad de la primera pantalla se te quedan las otras abiertas y regresa a la más cercana. No obstante, es raro que al poner "ExitApplication" te cierre solo esa actividad y no el resto de actividades. No sé porqué te ocurre eso, yo creía que al poner "ExitApplication" te cerraba la aplicación entera, es decir, todas las actividades.

Lo que yo haría de tí es cerrar las actividades cuando vayas a abrir otra nueva para que no se mantenga en memoria, es decir, cada vez que pongas StartActivity("nombre") pon justo debajo Activity.Finish

Respecto a lo de la app no se rote no sé lo que quieres decir.

Saludos
 

Descartex

Well-Known Member
Licensed User
Longtime User
Como bien te dice cbc551, al poner ExitApplication, debería cerrar la aplicación entera.
De todas formas, el consejo es muy bueno, recomendable, cada vez que abras un activity, salvo que vayas a volver a él inmediatamente, cierra el anterior.

En cuanto a lo de que no se gire... pues tienes q elegir entre landscape, portrait o undefined. Rota porque lo tienes en undefined. Si pones los otros modos, no rotará la pantalla.

Un saludo.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Bratislava21:

en cambio si empiezo a abrir pantallas y me regreso al menú donde está el botón para salir y lo oprimo no sale sino que se regresa a una pantalla cualquiera

Esto es normal que pase, el ExitApplication matará el proceso. Si hay algún servicio que se ejecuta a continuación, se reinicia el proceso. Debes cerrar todas las actividades y servicios antes de llamarlo, de ahi que te entren de nuevo. Yo te aconsejo que emplees el Activity.Finish en vez del ExitApplication, de esa forma será el SO quien mate la aplicación cuando necesite memoria.

Hola Cbc551:
Lo que yo haría de tí es cerrar las actividades cuando vayas a abrir otra nueva para que no se mantenga en memoria, es decir, cada vez que pongas StartActivity("nombre") pon justo debajo Activity.Finish

Si a continuación de la llamada al StartActivity pones justo debajo Activity.Finish, lo que harás es matar la actividad desde donde la llamas, por que despues de ejecutar la linea StartActivity ejecutara la siguiente y luego se irá a Pause. Asi que si por ejemplo haces eso desde main, cuando vuelvas del activity llamado saldrá de la aplicación.

Si os leeis el tutorial "Guia rápida del Ciclo de Vida de Android"
http://www.b4x.com/android/forum/th...ia-rápida-del-ciclo-de-vida-de-android.38760/
Podreis ver como se comporta Android cuando llamas y cuando sale de una actividad.

tambien me gustaría saber como ponerle para que la app no se rote
Como he comentado en otras ocasiones, no es buena practica hacer una pregunta diferente dentro de otra, por que si alguien busca esa pregunta de no rotar la App, nadie sabrá la solucion ya que la pregunta del post original no es esa. Os rogaria que leyerais el post:
Mejorar el foro “Spanish Forum
http://www.b4x.com/android/forum/threads/mejorar-el-foro-“spanish-forum”.39799/

Y de paso que colaboreis, asi nos beneficiaremos todos, y ya puestos, posteis en el post de Heppy cuando se ha solucionado la pregunta:
Indice de temas con [Solucionado] o de gran interés
http://www.b4x.com/android/forum/th...ucionado-o-de-gran-interés.44948/#post-276358

Saludos
 
D

Deleted member 30048

Guest
Hola Cbc551:
Si a continuación de la llamada al StartActivity pones justo debajo Activity.Finish, lo que harás es matar la actividad desde donde la llamas, por que despues de ejecutar la linea StartActivity ejecutara la siguiente y luego se irá a Pause. Asi que si por ejemplo haces eso desde main, cuando vuelvas del activity llamado saldrá de la aplicación.

Sale de la aplicación si se deja la función del botón atrás por defecto, pero se puede controlar que al pulsarlo abra la actividad anterior y te cierre esa actividad.

Es cierto que es mejor tener las 2 abiertas, es más yo lo hago así. Por ejemplo: Tengo el Main y abro Actividad 2 (Ahora tengo abierto Main y Actividad2), si cierro Actividad2 vuelve solo al Main. Lo que pasa es que si no controlas eso muy bien puedes tener abiertas tropecientas actividades repetidas y eso no es bueno. He visto una aplicación en google play que pulsabas el botón de atrás y, dependiendo del caso, te volvía algunas o muchas veces otra vez a la misma actividad hasta que se cerraba a la séptima u octava vez.

Como he visto que tiene la señal de "New Member", para que no se lie ni se caliente la cabeza, pienso que es mejor para él que cuando abra una actividad cierre la anterior.

tambien me gustaría saber como ponerle para que la app no se rote

Como ha dicho descartex, tienes que elegir entre unspecified, landscape o portrait en la línea de código "#SupportedOrientations: unspecified"

Yo te aconsejo que emplees el Activity.Finish en vez delExitApplication, de esa forma será el SO quien mate la aplicación cuando necesite memoria.

Eso ya depende de la persona, a mi me gusta usar ExitApplication. Es una manía que tengo que me hace pensar que al poner Activity.Finish, como la app está en segundo plano, va a consumir más batería. A lo mejor es verdad o a lo mejor es mentira :-D

Saludos!
 
Last edited by a moderator:

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola cbc551

Sale de la aplicación si se deja la función del botón atrás por defecto, pero se puede controlar que al pulsarlo abra la actividad anterior y te cierre esa actividad.
Si, eso lo sabemos todos, pero no crees que es mas facil no controlarlo y que lo haga el SO? De esa forma cumpliremos con lo que dices tu de:
para que no se lie ni se caliente la cabeza, pienso que es mejor para él que cuando abra una actividad cierre la anterior.


Como he visto que tiene la señal de "New Member", para que no se lie ni se caliente la cabeza, pienso que es mejor para él que cuando abra una actividad cierre la anterior.

La verdad que en esto de la programación nadie tiene la verdad única, la única verdad es resolver el problema de la forma que uno mejor sepa. Yo personalmente creo que al ser alguien que pregunta por algo que no entiende, lo mejor es dejar el ciclo de android tal como está, si cierras desde la que estas, te veras obligado a abrirla desde la que vayas, con el inconveniente que si tienes varios activitys tendras que poner una variable global para saber de donde viene y a donde quieres ir.

A menos que controles el boton Back y te puedas equivocar que es lo que haces cuando lo detecta, yo jamas he tenido problema para que vuelva y cierre la actividad.

bratislava21 said:
tambien me gustaría saber como ponerle para que la app no se rote

Como ha dicho descartex, tienes que elegir entre unspecified, landscape o portrait en la línea de código "#SupportedOrientations: unspecified"
Creo que no entendiste mi comentario, no es que no quiera darle la solucion, es que creo que no es el post adecuado por lo que comenté mas arriba:
Como he comentado en otras ocasiones, no es buena practica hacer una pregunta diferente dentro de otra, por que si alguien busca esa pregunta de no rotar la App, nadie sabrá la solucion ya que la pregunta del post original no es esa. Os rogaria que leyerais el post:
Mejorar el foro “Spanish Forum
http://www.b4x.com/android/forum/threads/mejorar-el-foro-“spanish-forum”.39799/



Eso ya depende de la persona, a mi me gusta usar ExitApplication. Es una manía que tengo que me hace pensar que al poner Activity.Finish, como la app está en segundo plano, va a consumir más batería. A lo mejor es verdad o a lo mejor es mentira :-D
La actividad en segundo plano pasa a Pause, por lo tanto no hace nada, está parada, solo consume memoria. A menos que tenga un servicio, pero ese servicio correrá tanto si sales con un ExitApplication o un Activity.Finish. El problema, es que si tienes un servicio no es bueno salir con un ExitApplication, y esto no es de mi cosecha, lo dice el Sr. Erel ;)

Saludos
 

bratislava21

New Member
Muchas gracias a los 2, tanto cbc551 como a BgSoft, me sirvió tu información cbc551 lo de cerrar el Activity y BgSoft gracias por decirme los de hacer 2 preguntas en una lo tendré en cuenta lo que pasa como soy nuevo en este foro no sé mucho.
 
Top