0

快速提问......使用 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 书,因为我不认为我会一直使用这种语言

4

4 回答 4

6

我不明白您是说将 midlet 置于暂停状态还是仅在指定时间内停止执行。

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

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

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

于 2009-06-20T15:20:29.413 回答
2

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

于 2009-06-20T15:20:00.363 回答
1

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

[...]并且不想仅仅对线程进行编程[...]

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

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

于 2009-06-20T15:26:54.860 回答
0

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

于 2009-06-26T21:16:10.467 回答