Autore Topic: semplice timer utilizzando i thread  (Letto 753 volte)

Offline esnho

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
semplice timer utilizzando i thread
« il: 30 Settembre 2013, 18:28:14 CEST »
0
Ciao,
non riesco a capire come far funzionare questo timer, quando lo faccio partire arriva subito a zero, sicuramente mi mancano le basi ma credo che il problema sia semplice.
Mi sapreste dare una mano?
Anche semplicemente con una guida chiara di come gestire gli handle e i thread, con ciò che ho trovato googlando sono arrivato a questo codice un po' strano e, naturalmente, non funziona....

Per arrivare a tutto ciò ho fatto riferimento a questi due testi:
A Basic Overview of Android Threads and Thread handlers - Techotopia
multithreading - How to pause/resume thread in Android? - Stack Overflow

Codice (Java): [Seleziona]
        private TextView timerView;
        private MyCountDownTimer countdown;
        private long time = 4;
        private long stepTime = 1000;
        private Runnable timerRun;
        private Thread timer;
        private Object tPauseLock;
        private boolean tPause = true;


        private void startTimer() {
                Log.v("time",""+time);
                synchronized (tPauseLock) {
                        Log.v("time","second time" +time);
                        tPause = false;
                        tPauseLock.notifyAll();
                }
        }
       
        private void stopTimer() {
                Log.v("button","STOP TIMER");
                synchronized (tPauseLock) {
                        tPause = true;
                }
        }


        private Handler timerHandler = new Handler() {
                @Override
                public void handleMessage(Message msg) {
                        Bundle bundle = msg.getData();
                        String string = bundle.getString("curTime");
                        TextView timerView = (TextView) findViewById(R.id.timerView);
                        timerView.setText(string);
                }
        };

        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.timer_test);
               
                timerView = (TextView) findViewById(R.id.timerView);
                Log.v("time",""+time);
                initTimer();
           
                timerView.setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View v) {
                                Log.v("cliccato","CLICCATO");
                                startTimer();
                                enableButtons();
                        }
                });
        }

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:semplice timer utilizzando i thread
« Risposta #1 il: 30 Settembre 2013, 19:28:01 CEST »
0
Dalla parte di codice postato non riesco a capire cosa è che vuoi fare, per cui è difficile dire dove possa essere il problema. Puoi spiegare a grandi linee l'impiego del timer?

In generale, se ti serve un timer generico, usa AlarmManager e non i thread.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline esnho

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
Re:semplice timer utilizzando i thread
« Risposta #2 il: 01 Ottobre 2013, 16:27:51 CEST »
0
Al momento intendo semplicemente fare una textview che cliccandoci fa partire un timer di countdown, mi interessa aver delle funzioni per poter mettere in pausa o far ripartire il timer. Volevo usare i thread anche per capire un po' come funzionano. All'inizio avevo usato CountDownTimer ma prima di raggiungere lo 0 si bloccava per un attimo, in altre parole ogni secondo visualizzo il conto alla rovescia, ma il secondo tra 1 e 0 dura due secondi invece di 1, così ho deciso, seguendo dei post in rete, di creare il mio conto alla rovescia usando thread, handler e runnable, così almeno capisco anche come gestirli ma, ho dei problemi...