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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  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 885 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 38,639 Último mensaje 8 Septiembre 2011, 09:36 am
por WHK
ejecutar un bat en segundo plano « 1 2 »
Scripting
Cronos - Carthago 11 21,146 Último mensaje 18 Julio 2013, 01:31 am
por Eleкtro
Juegos en segundo plano « 1 2 »
Software
motocros_elche 11 5,721 Último mensaje 27 Febrero 2014, 22:58 pm
por Eleкtro
segundo plano
Windows
makinavaja3500 2 3,146 Último mensaje 6 Diciembre 2012, 21:32 pm
por makinavaja3500
Minar en segundo plano
Hacking
the_admin_login 0 2,483 Ú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