【问题标题】:BlackBerry - Does TimerTask run in the background?BlackBerry - TimerTask 是否在后台运行?
【发布时间】:2010-12-23 19:31:30
【问题描述】:

即使我退出我的应用程序并回到主屏幕或浏览其他应用程序,TimerTask 是否工作? 我已经阅读了论坛,发现线程的一种简单机制是在 BB 中使用 TimerTask。即使我的应用程序没有启动(第一次之后),我也希望线程始终运行,这样当特定间隔到达时,我可以从应用程序中显示我的对话框。 我尝试了以下方法:(我有这段代码,而不是在 MainScreenClass 中,而是首先推送屏幕类)

 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 模拟器上进行测试。

感谢您的帮助。

【问题讨论】:

    标签: multithreading blackberry process timer background-application


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。我会试试这个并更新。还有一个问题,我上面的 TimerTask 代码本身,如果我使用 UiApplication.getUiApplication().requestForeground();在应用程序关闭时,将允许我的应用程序始终运行并且计时器也将始终运行正确吗?
    • 我宁愿看到你使用requestBackground(),这样用户就会产生关闭应用程序的错觉。也就是说,我认为这种方法会奏效;但我个人没有使用过。从性能的角度来看,registerAlarm() 方法可能更好。
    • 我自己从未尝试过 registerAlarm() ,认为它比让您的应用程序在后台连续运行更能提高性能。问题是您需要开发 MIDlet 才能使用 registerAlarm()...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 2016-11-06
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多