1

即使我退出我的应用程序并进入主屏幕或探索其他应用程序,TimerTask是否也能正常工作? 我已经阅读论坛,并找出线程类的简单机制是在BB中使用TimerTask。我希望线程始终运行,即使我的应用程序没有启动(在第一次之后),以便在特定间隔到达时,我可以从应用程序中显示我的对话框。 我试过如下:(我有这个代码,而不能代替MainScreenClass第一推屏幕类)BlackBerry - TimerTask是否在后台运行?

try { 
    timer = new Timer(); 
    // start after 1 second, repeat every 5 second 
    // timer.schedule(new ClickTask(), 0, 5000); // seconds*1000 
    timer.scheduleAtFixedRate(new ClickTask(), 0, 5000); 
} catch (Exception e) { 
    // do nothing 
} 

private class ClickTask extends TimerTask { 
    public void run() { 
    System.out.println("Test Printing.."); 
    // Screen screen = new Dialog(Dialog.D_OK, 
    // "Look out!!!", Dialog.OK, 
    // Bitmap.getPredefinedBitmap(Bitmap.EXCLAMATION), 
    // Manager.VERTICAL_SCROLL); 
    } 
} 

但它只能运行在我的应用程序启动计时器。如果我退出应用程序并进入设备主屏幕,似乎是日志不打印(即计时器未运行)。我的代码是否正确?这是在后台运行计时器的方式作为线程? 注意:我正在为此测试9530模拟器。

感谢您的帮助。

回答

3

TimerTask适用于您的应用程序实际运行时。

查看PushRegistry.registerAlarm()以在间隔后启动您的应用程序。

+0

谢谢。我会尝试这个并更新。还有一个问题,用我上面的TimerTask代码本身,如果我使用UiApplication.getUiApplication()。requestForeground();在应用程序关闭时,将允许我的应用程序始终运行,并且定时器也将始终运行正确吗? – Getsy 2009-12-06 21:36:50

+1

我宁愿看到你使用'requestBackground()',以便用户获得关闭应用程序的幻觉。这就是说,我认为这种方法将起作用;但我没有亲自使用它。从性能的角度来看'registerAlarm()'方法可能更好。 – 2009-12-06 21:57:03

+0

从来没有尝试registerAlarm()我自己,认为它的性能比让你的应用在后台连续运行更好。问题是你需要开发MIDlet来使用registerAlarm()... – 2009-12-07 11:56:04