Programacion J2ME: duda sobre destroyApp

Iniciado por slackbyte, 19 Abril 2009, 08:20 AM

0 Miembros y 1 Visitante están viendo este tema.

slackbyte

Hola que tal, espero este sea el lugar para postear sobre J2ME. Estoy iniciandome en el mundo de la programacion de midlets para telefonos celulares, sin embargo he querido probar lo siguiente:

cuando abres una aplicacion, y de repente te llaman (por manejar un ejemplo), la aplicacion como que se cierra y aceptas la llamada... sin embargo al finalizar la llamada o lo que estabas haciendo, y vas a tu menu de aplicaciones, te manda un mensaje (dependiendo del telefono) de si quieres cerrar o reanudar la aplicacion que tenias abierta, es decir, se quedo activa en segundo plano. Pues bien, mi pregunta es como puedo manualmente mandar la aplicacion a segundo plano y que se quede ejecutando x cosas, y asi tener el dispositivo movil libre para que de mientras pueda hacer llamadas, enviar mensajes o que se yo, en lo que la aplicacion este ejecutando otras tareas.
He intentado moverme en pauseApp, pero la aplicacion pues eso mismo hace, se pausa pero no se "cierra" para mandarla a segundo plano.

puse en el tema "destroyApp" pues alguien me dijo que en ese metodo podia hacer eso, sin embargo honestamente no se exactamente como, pues yo pongo un boton que ejecute "destroyApp();" y pues cierra totalmente la aplicacion.
Esto es lo que tengo cuando se ejecuta el botón:
        if(c == ex){
            destroyApp(true);
            notifyDestroyed();

mientras que destroyApp() no tiene nada. Les agradezco muchisimo su ayuda!

jwuo3161

amigo aqui esta la solucion espero te sirva saludos
// hide es un command simplemente le das a tu objeto pantalla null
else if(c==hide){
            pantalla.setCurrent(null);
      }
saludos
jwuo
Windzor;)

slackbyte

Muchisimas gracias por tu apoyo amigo, hace poco encontre una solucion similar pero espere a postearla pues queria probarla a fondo, ya que me han comentado que solo funciona en algunos modelos symbian, y pues el chiste de mi aplicacion es que se suspenda en la mayoria de los dispositivos con j2me, no se si tu lo has probado en otros moviles, este es mi codigo:
        display.getDisplay(this);
        display.setCurrent(null);

Sin embargo tengo un problemita que aun no logro solucionar, y ojala puedas hecharme la mano al respecto amigo, quiza la logica a como lo estoy manejando no es la adecuada... el caso es que cuando suspendo la aplicacion, ejecuto un metodo XY el cual reproduce un timbre cada 10 segundos, ya que está dentro de un loop infinito, ademas de que puse un Thread.sleep(10000) dentro del mismo loop para que espere 10 segundos antes de volver a reproducir el timbre. Esto funciona bien, pero al regresar a la aplicacion, el loop sigue ejecutandose y traba el midlet pues intento ejecutar otras cosas. No se de que manera puedo decirle al midlet que detenga el metodo XY al regresar a la aplicacion, ya que le he intentado con flags, y las pongo tanto en el constructor, hasta donde se quedo la ejecucion de codigo, y demas, pero no funciona. Ojala puedan apoyarme, estoy seguro que es un detalle, pero no lo he notado. muchas gracias :D

jwuo3161

Mira amigo lo que haces con asignarle null al display es hcerle un pause a la aplicacion similar alo que ocurre cuando digamos tas jugando y te entra una llamada, bueno en fin cre que ese problema ya esta resuelto yo lo prove en un Nokia 5800 y Sony ericsson k550i y funciona de maravilla. Para lo de reproducir sonido cada cierto tienpo eso de ponerle un hilo es demasiado uso de memoria te recomiento que revises la clase Timer de J2me.

public class Verificar extends TimerTask{
public Verificar(){
   }
      public void run()
      {
         //Aqui lo que desees ejecutar en tu caso iniciar el sonido
}
//....con esto inicias el timer
        Timer timer=new Timer();
        timer.schedule(new Verificar(), 0, 1000);//new Verificar () es el nombre de la             clase a ejecutarse
// 0 indica en que momento se inicia el timer en este caso imediatamente creado el timer
// y finalmente 10000 es cada cuanto tiempo se lanzara el timer en tu caso cada 10 segundo
//Para detener o destruir el timer le das timer.Cancel y listo



Espero te sirva saludos Windzor ;)
Windzor;)