La cuenta regresiva de Android no funciona correctamente, los números siguen parpadeando entre 2 valores y la zona horaria no funciona

Tengo una cuenta regresiva que cuenta hasta una fecha específica. Cada marca (intervalo de 1 segundo) actualiza un cuadro de texto con los días / horas / minutos restantes hasta el evento. Mi problema es que los minutos (todavía no se conocen los días / horas) siguen parpadeando. Lo que significa que dice 18 y luego 17 y luego 18 y luego 17 durante el minuto antes de bajar a 16 y luego 17 y luego 16 y continúa así.

Problema de parpadeo resuelto, ahora es solo la zona horaria la que no funciona. (El parpadeo se resolvió utilizando el código de Pshemo)

Además, TimeZone no parece estar funcionando. Muestra 2 horas a mucho. Intenté cambiarlo usando SimpleTimeZone pero no funciona, todavía muestra las +2 horas (independientemente de la configuración en SimpleTimeZone)

¿Qué podría ser la causa?

Código de cuenta regresiva:

         new CountDownTimer(remaining, 1000) {
         TextView tv = (TextView)getActivity().findViewById(R.id.introTimeLeft);
         public void onTick(long millisUntilFinished) {         
             SimpleTimeZone ts = new SimpleTimeZone(2, "Middle Europe");

             Calendar cal = Calendar.getInstance(ts);
             cal.set(2012, 5, 28, 17, 0);
             long endTime = cal.getTimeInMillis(); 
             long currentTime = System.currentTimeMillis();
             long remaining = endTime - currentTime;

         tv.setText(getDurationBreakdown(remaining));
         }

         ...

      }.start();

public String getDurationBreakdown(long millis)
{
    if(millis < 0)
    {
        throw new IllegalArgumentException("Duration must be greater than zero!");
    }

    long days = TimeUnit.MILLISECONDS.toDays(millis);
    millis -= TimeUnit.DAYS.toMillis(days);

    long hours = TimeUnit.MILLISECONDS.toHours(millis);
    millis -= TimeUnit.HOURS.toMillis(hours);

    long minutes = (long) Math.ceil(TimeUnit.MILLISECONDS.toMinutes(millis));

    StringBuilder sb = new StringBuilder(64);
    sb.append(days);
    sb.append(" Days ");
    sb.append(hours);
    sb.append(" Hours ");
    sb.append(minutes);
    sb.append(" Minutes");

    return(sb.toString());
}
Respuesta 1

He estado tratando de comprender el concepto de subprocesamiento múltiple y confundido sobre el siguiente código: clase MyClass {contenido privado de StringBuilder = nuevo StringBuilder (); public void setContent () {...

He estado mirando el ejemplo publicado en OpenNTF: http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=Threads%20and%20Jobs mi problema es que parece que no puedo referirme a ...

Tengo una aplicación Java, y necesito información de ubicación. basado en una determinada IP. Actualmente, estoy usando http://freegeoip.net. Estoy usando Java, y lo que hago es obtener la información de geolocalización para el mencionado ...

Sé que esta pregunta apareció durante mucho tiempo, pero ninguna de las soluciones me funcionó. Maven lanza "java.lang.OutOfMemoryError" Cómo lidiar con "java.lang ...