让J2ME Midlet在没有线程的情况下休眠?

时间:2009-06-20 14:50:48

标签: java java-me scheduling midlet midp

快速提问......使用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 个答案:

答案 0 :(得分:6)

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

如果是后者,实际上我没有不受欢迎,为什么你不想使用Threads,这没什么大不了的。您只需在以下任意位置插入以下三行:

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

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

答案 1 :(得分:2)

我不知道确切的答案,但我也不明白调用静态方法Thread.sleep(毫秒)的问题是“导致当前正在执行的线程休眠(暂时停止执行)指定的数字”毫秒“。你打电话给这个编程线程吗?

答案 2 :(得分:1)

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

  

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

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

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

答案 3 :(得分:0)

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