发出通知,每天晚上9点运行

时间:2011-09-13 13:30:02

标签: blackberry java-me blackberry-jde

我想在我的应用程序中进行自动同步,这将在每天晚上9点进行。我这样做的方式是:

try { Thread.sleep(24hours); } catch (Exception ex) { }

但问题是当用户在24小时之前关闭他的设备时,当打开它时,线程将再次睡眠24小时。

所以我正在考虑根据系统的时钟来管理它的方法。当设备的时间为晚上9点时,应用程序将收到警报,我将继续工作。

有可能做到吗?

6 个答案:

答案 0 :(得分:2)

您是否看过Quartz(http://www.quartz-scheduler.org/)?也许它会适用。

答案 1 :(得分:2)

我建议使用已经制作的一个可用的开源java调度程序:List of Open Source Job Schedulers in Java

我熟悉的是该列表中的第一个:Quartz

......看起来有人打败了我。 (上面的答案是在我写这篇文章时添加的)

但只是为了快速扩展,您可以轻松设置在后台运行的“作业”,与用户分开。现在,我个人将此用于网站,而不是用户可以关闭和打开的设备。话虽如此,我确定你之前已经解决过的问题已经解决了,你应该尝试一下石英,它可能会做你需要的。

祝你好运, -Asaf

答案 2 :(得分:2)

您希望将应用安排在特定时间运行。 BlackBerry的操作系统支持此功能。见Schedule a BlackBerry application

答案 3 :(得分:0)

可以通过运行简单的后台线程来解决问题。

  public static void main(String[] args) {
        Thread myJobThread = new Thread(this, "My background job");
        myJobThread.setDaemon(true);
        myJobThread.start();
    }

    // check the time every minute
    private int checkRate = 60000;

        @Override
        public void run() {
            while(true) {
                Date now = new Date();
                if (now > 9a.m.) {
                    // do your stuff
                }
                try {
                    Thread.sleep(checkRate);
                } catch (InterruptedException e){
                    // handle ex
                }
            }
        }

答案 4 :(得分:0)

您可以考虑使用RealTimeClockListener。然后,您将编写一个方法clockUpdated(),每分钟都会由操作系统调用。在那里,您可以进行计算以确定是否是执行代码的时间。

答案 5 :(得分:-1)

也许你可以用Calendar

来做到这一点
    boolean nine=false;

    //until it's nine'o clock
    while(!nine){

      Calendar calendar=Calendar.getInstance();
        if(calendar.get(Calendar.HOUR_OF_DAY)==9&&calendar.get(Calendar.MINUTE)==0&&calendar.get(Calendar.SECOND)==0&&calendar.get(Calendar.MILLISECOND)==0){
            nine=true;
                nine=true;
            }
            else {
                sleep(yourTime);
            }
    }

    //...whatever should happen now...

   //put the boolean back to false;
    nine=false;