elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Kotlin segundo plano
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Kotlin segundo plano  (Leído 380 veces)
pepetonic2001

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Kotlin segundo plano
« en: 25 Febrero 2024, 00:52 am »

Hola.
Tengo un cronómetro creado en un servicio al que llamo desde uno de los activity de la app.
Un el  onCreate del activity lo declaro:
Cronometro2.setUpdateListener(this)

Con un botón lo pongo en marcha:
startService(Intent(this, Cronometro2::class.java))

Con otro botón lo paro:
stopService(Intent(this, Cronometro2::class.java))

El problema que tengo es que si doy al Power del móvil que se apaga la pantalla y a los pocos segundos lo vuelvo al pulsar, al encenderse la pantalla sí que continúa el cronómetro en marcha, pero si tardo unos minutos en encenderlo, el cronómetro está detenido, no ha estado incrementándose en ese tiempo, ni se reanuda al volverse a encender, tengo que volver a arrancarlo.

He probado desde el setup del móvil eliminar todo el tema de ahorro de batería.
Tampoco he conseguido nada con window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)

public class Cronometro2 extends Service {
    private Timer temporizador = new Timer();
    private static final long INTERVALO_ACTUALIZACION = 10;
    public static CrearRuta UPDATE_LISTENER;
    private double cronometro = 0;
    private Handler handler;

    public static void setUpdateListener(CrearRuta poiService) {
        UPDATE_LISTENER = poiService;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        iniciarCronometro();

        handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                UPDATE_LISTENER.updateStopWatchView(cronometro);
            }
        };
    }

    @Override
    public void onDestroy() {
        pararCronometro();
        super.onDestroy();
    }

    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }

    private void iniciarCronometro() {
        temporizador.scheduleAtFixedRate(new TimerTask() {
            public void run() {
                cronometro += 0.01;
                handler.sendEmptyMessage(0);
            }
        }, 0, INTERVALO_ACTUALIZACION);
    }

    private void pararCronometro() {
        if (temporizador != null)
            temporizador.cancel();
    }
}


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ejecutar un bat en segundo plano « 1 2 »
Scripting
Cronos - Carthago 11 20,482 Último mensaje 18 Julio 2013, 01:31 am
por Eleкtro
Python en segundo plano
Scripting
Danther 0 2,736 Último mensaje 31 Julio 2009, 18:14 pm
por Danther
Trabajar en Segundo Plano?
Programación Visual Basic
Dartor 6 2,273 Último mensaje 22 Octubre 2010, 14:41 pm
por raul338
exec en segundo plano
PHP
sexto 0 1,937 Último mensaje 11 Septiembre 2012, 13:02 pm
por sexto
segundo plano
Windows
makinavaja3500 2 2,844 Último mensaje 6 Diciembre 2012, 21:32 pm
por makinavaja3500
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines