【问题标题】:Making a J2ME Midlet sleep without threads?让 J2ME Midlet 在没有线程的情况下进入睡眠状态?
【发布时间】:2009-06-20 14:50:47
【问题描述】:

快速提问...使用 J2ME(CLDC 1.1,MIDP-2.1)是否可以让 Midlet 休眠一段时间(不使用线程)...例如:

public class myMidlet extends MIDlet{
    public void startApp() {
        /* Sleep for 10 seconds */

        /* The answer was: */
        try {
            Thread.sleep(time_ms);
        } catch (Exception e) {}
    }
...

我不怎么使用 Java,也不想为了简单的睡眠而编写线程。

提前致谢

答案摘要

我缺乏 Java 知识。我看到的使用 Thread.sleep() 的示例让我相信它只能在由 Midlet 生成的线程对象中使用……而不是 midlet 本身。我不想把 midlet 逻辑放到一个线程中让它休眠……但现在我知道 midlet 在默认线程中运行 :) 去寻找那本我从未读过的 Java 书,因为我没有'认为我永远不会使用这种语言

【问题讨论】:

    标签: java java-me scheduling midlet midp


    【解决方案1】:

    我不明白您的意思是让 midlet 处于暂停状态还是仅在指定时间内停止执行。

    如果是后者,其实我不明白,为什么你不想使用线程,这没什么大不了的。您只需在需要的地方插入以下三行:

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

    就是这样,没什么太复杂的。

    【讨论】:

    • 谢谢 :) 我没有想到 MIDlet 是作为主线程执行的,因此需要 Thread.sleep() ...我在网上看到的示例用于衍生线程:S
    • 嗯,MIDlet 是一个普通的 Java 应用程序,它有主线程和一切。 :) 方法 Thread.sleep() 是静态的,这意味着它可以在任何地方使用。如果您在处理 UI 事件(例如 CommandListener 的 commandAction() 方法)的线程中使用它,请小心。
    【解决方案2】:

    我不知道确切的答案,但我也不明白调用静态方法 Thread.sleep(milliseconds) 有什么问题“导致当前正在执行的线程休眠(暂时停止执行)指定数量毫秒”。你称之为编程线程吗?

    【讨论】:

    • 拍自己的头不知道主线程像其他任何睡眠一样被访问(不要太多java)......谢谢!
    【解决方案3】:

    我会选择 Malcolm 的方法,因为您的线程可能会抛出异常。

    [...]并且不想编写线程 只是[...]

    嗯,您将很难编写 J2ME 并试图避免线程化编程。如果您的应用程序变得有点复杂,尤其是在使用网络连接时,您将不得不使用线程。此外,如果某些操作需要超过 2-3 秒,则强烈建议在单独的线程中运行它,可能(同时)通知用户正在进行的工作。

    顺便说一句,我忘记了什么。我最近为大学课程编写了 J2ME 应用程序。在那里我构建了我称之为“ExecutableTask”的东西,它允许我以一种方便和简单的方式处理线程。如果你想拥有look at the source...很遗憾,由于 Google 托管解决方案的一些错误,你无法在 Google 存储库中在线浏览它(我的项目的某些名称是我的原因)。

    【讨论】:

    • 谢谢Juri ...在尝试并获得未捕获的异常之后,我交换了接受的答案。不试图避免线程......这只是一个简单的应用程序,我没有意识到 MIDlet 中有线程功能:)
    • 当我需要一个单独的线程来避免阻塞主线程并且我不想弄乱新类时,我创建了一个扩展 Thread 的匿名类并运行它。非常方便,尤其是在 Juri 描述的情况下:文件系统访问或某些网络连接。
    【解决方案4】:

    您可以尝试使用Object.wait()、Object.wait(long timeoutValue)。虽然我不建议您尝试延迟主 startApp() / 系统线程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-21
      • 2021-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-23
      相关资源
      最近更新 更多