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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  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 426 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
Ficheros .bat en Segundo Plano?¿ « 1 2 »
Hacking
yisas_fight 14 37,967 Último mensaje 8 Septiembre 2011, 09:36 am
por WHK
ejecutar un bat en segundo plano « 1 2 »
Scripting
Cronos - Carthago 11 20,533 Último mensaje 18 Julio 2013, 01:31 am
por Eleкtro
Juegos en segundo plano « 1 2 »
Software
motocros_elche 11 5,082 Último mensaje 27 Febrero 2014, 22:58 pm
por Eleкtro
segundo plano
Windows
makinavaja3500 2 2,859 Último mensaje 6 Diciembre 2012, 21:32 pm
por makinavaja3500
Minar en segundo plano
Hacking
the_admin_login 0 2,289 Último mensaje 12 Abril 2021, 18:58 pm
por the_admin_login
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines