Multithreading 黑莓-TimerTask是否在后台运行?
即使我退出我的应用程序并进入主屏幕或浏览其他应用程序,TimerTask是否仍然有效? 我阅读了论坛,发现线程类型的简单机制是在BB中使用TimerTask。我想让线程一直运行,即使我的应用程序没有启动(在第一次启动之后),这样当一个特定的时间间隔到来时,我可以从应用程序中显示我的对话框。 我尝试了以下方法:(我使用的代码不是MainScreen类,而是第一个push screen类) 但它只在我的应用程序启动时运行计时器。如果我退出应用程序并进入设备主屏幕,则可能是日志未打印(即计时器未运行)。我的代码对吗?这是作为线程在后台运行计时器的方法吗? 注:我正在9530模拟器上测试Multithreading 黑莓-TimerTask是否在后台运行?,multithreading,blackberry,process,timer,background-application,Multithreading,Blackberry,Process,Timer,Background Application,即使我退出我的应用程序并进入主屏幕或浏览其他应用程序,TimerTask是否仍然有效? 我阅读了论坛,发现线程类型的简单机制是在BB中使用TimerTask。我想让线程一直运行,即使我的应用程序没有启动(在第一次启动之后),这样当一个特定的时间间隔到来时,我可以从应用程序中显示我的对话框。 我尝试了以下方法:(我使用的代码不是MainScreen类,而是第一个push screen类) 但它只在我的应用程序启动时运行计时器。如果我退出应用程序并进入设备主屏幕,则可能是日志未打印(即计时器未运行)
感谢您的帮助。TimerTask用于应用程序实际运行的时间
请查看一段时间后如何启动应用程序。谢谢。我会试试这个并更新。还有一个问题,关于我上面的TimerTask代码本身,如果我使用UiApplication.getUiApplication().requestForeground();在应用程序关闭中,将允许我的应用程序始终运行,并且计时器也将始终正确运行?我希望看到您使用
requestBackground()。尽管如此,我认为这种方法会奏效;但我没有亲自使用过。从性能角度来看,registerAlarm()
方法可能更好。我本人从未尝试过registerAlarm(),我认为它比让应用程序在后台连续运行更能提高性能。问题是您需要开发MIDlet来使用RegisterArm()。。。
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);
}
}