2009-06-20 68 views
0

快速的問題...使用J2ME(CLDC 1.1,MIDP-2.1)是可能睡覺MIDlet的一段時間(不使用線程)...例如:在沒有線程的情況下製作J2ME 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書,因爲我沒有認爲我會用有史以來的語言

回答

6

我不明白你的意思是把midlet置於暫停狀態還是隻停止執行指定的時間。

如果是後者,其實我不會不喜歡,爲什麼你不想使用線程,這沒什麼大不了的。你只需要插入以下三個行你需要的地方:

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

這一切,沒有什麼太複雜。

+0

謝謝:)我沒有想到MIDlet正在作爲主線程執行,因此需要Thread.sleep()...我在網上看到的例子在產生的線程中使用:S – 2009-06-20 15:24:14

+0

那麼,MIDlet是一個具有主線程和一切的普通Java應用程序。 :)方法Thread.sleep()是靜態的,它可以在任何地方使用。如果您在處理UI事件(例如CommandListener的commandAction()方法)的線程中使用它,請注意。 – Malcolm 2009-06-20 15:30:41

2

我不知道確切的答案,但我也不明白什麼是調用靜態方法Thread.sleep(毫秒),「導致當前正在執行的線程睡眠(暫時停止執行)達指定的毫秒數「。你打這個編程線程嗎?

+1

*拍拍自己的頭*不知道主線程是否像其他睡眠一樣被訪問(不要太多java)......謝謝! – 2009-06-20 15:23:01

1

我會去馬爾科姆的方法,因爲你的線程可能會拋出異常。

[...]和不想程序線程 只是[...]

呃,你就會有一個很難J2ME編程,並試圖避免線程編程。如果你的應用程序變得更復雜一點,特別是在使用網絡連接時,你必須使用線程。此外,如果某些操作需要2-3秒以上,則建議在單獨的線程中運行它,可能(同時)通知用戶正在進行的工作。

順便說一句,我忘了。我最近爲大學課程編寫了一個J2ME應用程序。在那裏我構建了我所謂的「ExecutableTask」,它允許我以方便和簡單的方式處理線程。如果你想擁有一個look at the source ......不幸的是,由於谷歌託管解決方案(我的項目的一些名稱,我的原因)的一些錯誤,你不能在Google資源庫中在線瀏覽它。

0

您可以嘗試使用Object.wait()Object.wait(long timeoutValue)。雖然我不會建議你嘗試延遲主要的啓動應用程序()/系統線程。