priv modelos keyone dtek60 dtek50 con blackberry timer clock countdown

modelos - blackberry keyone



¿Cómo se visualiza la cuenta regresiva de toda la aplicación en Blackberry? (1)

No es posible agregar un solo field o manager ui en dos manager o screen . Cada field o manager UI debe tener, como máximo, uno de los padres ( screen o manager ).

Por lo tanto, si necesita un LabelField que contenga y muestre la hora en diferentes screen , entonces solo necesita implementar algún tipo de oyente que escuche los cambios de tiempo ... y para cada cambio debe actualizar la screen y LabelField con el nuevo valor Ya ha implementado un TimerTask que le proporcionará datos actualizados.

[Editado - agregado más tarde]

puede verificar los siguientes códigos, no probados, pero algo así resolverá su problema ...

class MyTimerUtil { TimerListener listener = null; public MyTimerUtil() { } public void setTimerListener(TimerListener listener) { this.listener = listener; } public void startTimer() { final int interval = 1000; Timer timer = new Timer(); TimerTask task = new TimerTask() { public void run() { // add your codes.. // notify others if (listener != null) { listener.timeChanged(); } } }; timer.schedule(task, 0, interval); } } interface TimerListener { public void timeChanged(); } class ScreeA extends MainScreen implements TimerListener { public void timeChanged() { // add Codes here on time changed event } }

en el fragmento anterior, puede implementar la interfaz TimerListener en cualquier instancia de pantalla y puede obtener actualizaciones cada vez que se MyTimerUtil el evento por la clase MyTimerUtil . Para eso, debe establecer una instancia de ScreeA (que implementa TimerListener ) a través de setTimerListener() de la clase MyTimerUtil .

También es necesario iniciar el temporizador llamando al método startTimer() .

Realizo y visualizo una cuenta atrás del reloj con este código

LabelField time; long mille=0; Timer timer=null;TimerTask task=null; public Timerscreen() { mille=1000*60*1; time=new LabelField(); add(time); timer=new Timer(); task=new TimerTask() { public void run() { synchronized (UiApplication.getEventLock()) { if(mille!=0){ SimpleDateFormat date=new SimpleDateFormat("mm:ss") ; System.out.println("================="+date.formatLocal(mille)+"====================="+Thread.activeCount()); time.setText(date.formatLocal(mille)); mille=mille-1000; }else{ time.setText("00:00"); mille=1000*60*1; timer.cancel(); UiApplication.getUiApplication().invokeLater(new Runnable() { public void run() { Dialog.inform("Time expaired"); } }); } } } }; timer.schedule(task,0, 1000);

Y cuando presiono una nueva pantalla, quiero que este reloj se muestre y cuente hacia abajo. Cómo puedo hacer eso ?