2011-02-02 11 views
5

Estoy tratando de usar el CountDownTimer en Android para obtener un TextView para realizar una cuenta regresiva de 100 a cero. Me gustaría que esto suceda lo más rápido posible mientras permanece visible.Actualizando Android TextView regularmente para mostrar la cuenta regresiva

Por el momento si el intervalo de marca CountDownTimer es menor a 500ms (creo que fue eso, podría haber sido un poco menor), entonces las actualizaciones simplemente no suceden.

Solo he probado esto en el emulador.

¿Estoy hablando de esto de la manera correcta? Si lo estoy, ¿esta aparente lentitud es una limitación del emulador o simplemente algo con lo que tendré que vivir? Si este no es el camino correcto, ¿alguien puede recomendar un enfoque diferente?

Respuesta

10

cheque bondadoso el siguiente código de ejemplo tanto en emulador & dispositivo

package com.sample; 

import android.app.Activity; 
import android.os.Bundle; 
import android.os.CountDownTimer; 
import android.widget.TextView; 

public class SampleTimer extends Activity { 

    TextView tv; // textview to display the countdown 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     tv = new TextView(this); 
     this.setContentView(tv); 

     // 10000 is the starting number (in milliseconds) 
     // 1000 is the number to count down each time (in milliseconds) 

     MyCount counter = new MyCount(10000, 1000); 
     counter.start(); 
    } 


    // countdowntimer is an abstract class, so extend it and fill in methods 
    public class MyCount extends CountDownTimer { 

     public MyCount(long millisInFuture, long countDownInterval) { 
      super(millisInFuture, countDownInterval); 
     } 

     @Override 
     public void onFinish() { 
      tv.setText("done!"); 
     } 

     @Override 
     public void onTick(long millisUntilFinished) { 
      tv.setText("Left: " + millisUntilFinished/1000); 
     } 
    } 
} 
1

Cómo estás haciendo la actualización en este momento, es que en el hilo de interfaz de usuario?

Si estaba contando en lugar de hacia abajo, podría usar el widget de interfaz de usuario Chronometer. No es lo suficientemente flexible como para retroceder, pero quizás podría usar its source como punto de partida.

Cuestiones relacionadas