blackberry - 如何在 Blackberry 上显示整个应用程序的时钟倒计时?

标签 blackberry timer clock countdown

我使用此代码制作并显示时钟倒计时

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);

当我按下一个新屏幕时,我希望这个时钟仍然显示并倒计时。
我怎样才能做到这一点 ?

最佳答案

无法添加单个 ui fieldmanager一分为二 manager s 或 screen s.. 每个用户界面 fieldmanager必须最多有一个父级( screenmanager )。

所以如果你需要一个 LabelField它将在不同的 screen 上保持和显示时间s,那么你只需要实现某种监听器来监听时间的变化......并且对于每一个变化你都必须更新 screenLabelField与新值。您已经实现了 TimerTask这将为您提供更新的数据。

[编辑 - 稍后添加]

您可以检查以下代码,未经测试,但这样的事情将解决您的问题...

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     
    }   
}

在上面的代码片段中,您可以实现 TimerListener任何屏幕实例中的界面,并且可以通过 MyTimerUtil 获取每次更改事件的更新类(class)。为此,您必须设置 ScreeA 的实例。 (实现 TimerListener )通过 setTimerListener()MyTimerUtil类(class)。

还需要通过调用 startTimer() 来启动定时器方法。

关于blackberry - 如何在 Blackberry 上显示整个应用程序的时钟倒计时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8531930/

相关文章:

android - 是否有任何软件可以让我为多种类型的手机开发应用程序?

timer - 实时 Linux : disable local timer interrupts

actionscript-3 - 获取计时器耗时

c - 如何在 linux 内核中运行 while 循环几毫秒?

javascript - 以 4 倍速度运行 Javascript 时钟

java - JS/Java 任何城市的夏令时时间

c - 为什么我从 clock() 获得的值与实时不同步?

java - 显示黑莓推送通知

exception - BlackBerry - 从位图创建图形对象时出现异常

blackberry - 如何在 BlackBerry Java 中更改焦点时更改现场管理器的背景图像