2009-06-20 7 views
0

クイック質問...使用してJ2ME(CLDC 1.1、MIDP-2.1)(スレッドを使用していない)一定期間、MIDletの睡眠することが可能です...例えば:J2MEミッドレットをスレッドなしでスリープさせるには?

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によって生成されたスレッドオブジェクトでのみ使用できると信じられました。私はミッドレットのロジックをスレッドに入れてスリープ状態にする必要はありませんでした...しかし、今ではミッドレットがデフォルトのスレッドで実行されていることを知っています:) 私が読んだことのないJavaの本

答えて

6

ミッドレットを一時停止状態にするか、指定した時間だけ実行を停止するかはわかりませんでした。

後者の場合、実際には私は気にしません。スレッドを使用したくない理由は、これは大きな問題ではありません。必要に応じて、次の3行を挿入するだけです。

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

それだけでも問題はありません。

+0

ありがとう:) MIDletがメインスレッドとして実行されていたため、Thread.sleep()が必要でした。私がオンラインで見た例は、生成されたスレッドで使用されています。S –

+0

MIDletは、メインスレッドとすべてを持つ通常のJavaアプリケーションです。 :) Method Thread.sleep()は静的な意味で、どこでも使用できます。 UIイベントを処理しているスレッド(例えばCommandListenerのcommandAction()メソッド)でスレッドを使用する場合は注意してください。 – Malcolm

2

私は正確な答えはわかりませんが、静的メソッドThread.sleep(ミリ秒)を呼び出すときに何が問題になるのか理解していません。 "現在実行中のスレッドをスリープさせます指定されたミリ秒間、実行を一時的に停止します。このプログラミングスレッドと呼んでいますか?

+1

*自分の頭を叩く*メインスレッドが他の人のようにアクセスしていたことに気づいていなかった。 –

1

スレッドが例外をスローする可能性があるので、私はMalcolmのアプローチに行きます。

[...]だけのスレッド をプログラミングする必要はありません[...]

ええと、あなたは苦労プログラミングJ2MEを持ち、スレッドプログラミングを避けるためにしようとします。あなたのアプリがもう少し複雑になった場合、特にネットワーク接続を使用する場合は、スレッドを使用する必要があります。さらに、いくつかの操作が2〜3秒以上かかる場合は、それを別のスレッドで実行することをお勧めします。これは、(同時に)ユーザーに進行中の作業について通知することもあります。

Btw、私が忘れたもの。私は最近、大学のコースのJ2MEアプリケーションを書いています。そこでは、私が "ExecutableTask"と呼んだものを構築しました。これは、便利で簡単な方法でスレッドを処理することを可能にしました。 look at the sourceが必要な場合は残念ながら、Googleのホスティングソリューションのバグ(私のプロジェクト名の一部)のために、残念ながらGoogleリポジトリでオンラインで閲覧することはできません。

+0

ありがとうJuri ...それを試してUncaughtの例外を取得した後、私は受け入れられた答えを交換しました。スレッドを避けようとしていません... MIDletのスレッド機能を持っていたことを気付かなかった単純なアプリです:) –

+1

メインスレッドをブロックするのを避けるために別のスレッドが必要なときに、クラス、私はスレッドを拡張し、それを実行する匿名クラスを作成します。非常に便利です。特に、Juriによって記述されたケースでは、ファイルシステムへのアクセスやいくつかのネットワーク接続が便利です。 – Malcolm

0

Object.wait(),Object.wait(long timeoutValue)を試すことができます。私はstartApp()/システムのメインスレッドを試して、遅らせることを勧めませんが。

関連する問題