Autore Topic: Thread in background si blocca  (Letto 608 volte)

Offline Eighteen

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsumg galaxy s3
  • Play Store ID:
    Segantin%20alessio&hl=it
  • Sistema operativo:
    Ubuntu, Sabayon , Windows
Thread in background si blocca
« il: 16 Ottobre 2014, 14:13:13 CEST »
0
Ciao a tutti,

sto sviluppando un semplice timer che deve funzionare anche in background oppure quando lo schermo è bloccato.
per ora sto usando questo codice per il thread, ma quando blocco lo schermo viene eseguito per circa 2 minuti e poi si ferma per poi ripartire quando riattivo lo schermo

Codice (Java): [Seleziona]
package com.blindtimer;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;

class Timer extends Thread {
        int min,sec;
        int im,is;
        private Handler handler;
        boolean run=true,pause=true;
        public Timer(Handler handler,int m,int s) {
                im=min=m;
                is=sec=s;
                this.handler = handler;
        }
        public void run() {
                playRunning();
                try {
                        String str;
                        while(min>=0&&run) {
                                if(!pause){
                                        if(min<10) str="0"+min+":";
                                        else str=min+":";
                                        if(sec<10)str=str+"0"+sec;
                                        else str=str+sec;
                                        aggiornatimer(str);
                                        Thread.sleep(1000);
                                        sec--;
                                        if(sec<0){
                                                min--;
                                                sec=59;
                                                if(min<0){
                                                        min=im;
                                                        sec=is;
                                                        Suona();
                                                }
                                        }
                                }
                        }

                }catch(InterruptedException ex) {}
        }
        void pauseRunning(){
                pause=true;
        }
       
        void playRunning(){
                pause=false;
        }
        void stopRunning(){
                Log.i("Timer", "Stopping");
                run=false;
        }
        private void aggiornatimer(String str) {
                Message msg = handler.obtainMessage();
                Bundle b = new Bundle();
                b.putString("refresh", ""+str);
                msg.setData(b);
                handler.sendMessage(msg);
        }
        private void Suona() {
                Message msg = handler.obtainMessage();
                Bundle b = new Bundle();
                b.putString("suona","suona");
                msg.setData(b);
                handler.sendMessage(msg);
        }
}

Come potrei risolvere?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Thread in background si blocca
« Risposta #1 il: 16 Ottobre 2014, 14:40:04 CEST »
0
Se vuoi un "timer" usa AlarmManager, che è un vero e proprio "timer".

Il thread si blocca (per fortuna) per non svuotare la batteria anche quando il terminale si suppone sia spento, perchè il tuo thread terrebbe costantemente attiva la cpu.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Eighteen

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsumg galaxy s3
  • Play Store ID:
    Segantin%20alessio&hl=it
  • Sistema operativo:
    Ubuntu, Sabayon , Windows
Re:Thread in background si blocca
« Risposta #2 il: 16 Ottobre 2014, 14:42:08 CEST »
0
allarmManager funziona anche con il telefono bloccato?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Thread in background si blocca
« Risposta #3 il: 16 Ottobre 2014, 15:19:32 CEST »
0
allarmManager funziona anche con il telefono bloccato?

si
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Eighteen

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsumg galaxy s3
  • Play Store ID:
    Segantin%20alessio&hl=it
  • Sistema operativo:
    Ubuntu, Sabayon , Windows
Re:Thread in background si blocca
« Risposta #4 il: 16 Ottobre 2014, 15:22:40 CEST »
0
ora ho un altro problema però :-\ io ho bisogno che venga visualizzato il timer nell' activity, ma da quello che ho visto dagli esempi non è fattibile come cosa o sbaglio?