代码之家  ›  专栏  ›  技术社区  ›  Aiden Bell

在没有线程的情况下使J2ME MIDlet休眠?

  •  0
  • Aiden Bell  · 技术社区  · 15 年前

    快速提问…使用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在默认线程中运行:) 我会发现我从来没有读过的Java书,因为我不认为我会一直使用这种语言。

    4 回复  |  直到 12 年前
        1
  •  6
  •   Malcolm    15 年前

    我不明白您的意思是将MIDlet置于暂停状态,还是只在指定的时间内停止执行。

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

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

    就这些,没什么太复杂的。

        2
  •  2
  •   Dmitry Tashkinov    15 年前

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

        3
  •  1
  •   Juri    15 年前

    我赞成马尔科姆的方法,因为您的线程可能会抛出一个异常。

    […]并且不想编程线程 只是……

    呃,您将很难对J2ME进行编程,并试图避免线程编程。如果你的应用变得更加复杂,特别是在使用网络连接时,你必须使用线程。此外,如果某些操作需要2-3秒以上,则最好在单独的线程中运行它,可能(同时)通知用户正在进行的工作。

    顺便说一句,我忘了什么。我最近为一门大学课程写了一个J2ME应用程序。在这里,我构建了我所称的“可执行任务”,它允许我以方便和简单的方式处理线程。如果你想 look at the source …不幸的是,由于google托管解决方案的一些缺陷(我的项目的某个名称是我的原因),您无法在google存储库中在线浏览它。

        4
  •  0
  •   Lucifer phtrivier    13 年前

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