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模拟器。
感谢您的帮助。
谢谢。我会尝试这个并更新。还有一个问题,用我上面的TimerTask代码本身,如果我使用UiApplication.getUiApplication()。requestForeground();在应用程序关闭时,将允许我的应用程序始终运行,并且定时器也将始终运行正确吗? – Getsy 2009-12-06 21:36:50
我宁愿看到你使用'requestBackground()',以便用户获得关闭应用程序的幻觉。这就是说,我认为这种方法将起作用;但我没有亲自使用它。从性能的角度来看'registerAlarm()'方法可能更好。 – 2009-12-06 21:57:03
从来没有尝试registerAlarm()我自己,认为它的性能比让你的应用在后台连续运行更好。问题是你需要开发MIDlet来使用registerAlarm()... – 2009-12-07 11:56:04