2

アプリを最小化し、タイマーが終了したら元に戻したいです。

以下のコードを使用します。

アプリケーションの使用を最小限に抑えるには、次のコード行を使用します。

   Display.getDisplay (MIDLET_CLASS_NAME).setCurrent (null);

画面を元に戻すには、次を使用します。

   Display.getDisplay (MIDLET_CLASS_NAME).setCurrent (myCanvas);

しかし、電話のディスプレイを閉じて時計モードにすると、ボタンを押すまでミッドレットのディスプレイは表示されません。

何か案が?

4

1 に答える 1

1

setCurrentあなたの質問から、何らかの形でデバイスに画面をすぐに「強制」するか、画面が表示された後にのみ戻ることを期待しているように聞こえます。

Display.setCurrentの API ドキュメントで明確に説明されているように、これはそうではありません。

Displayable別のオブジェクトをディスプレイに表示するように要求します。通常、変更はすぐには反映されません。次のイベント配信メソッドが呼び出される前に発生することは保証されていませんが、イベント配信メソッドの呼び出しの間に発生するように遅延する可能性があります。setCurrentメソッドは、変更が行われるのを待たずにすぐに戻ります...

...アプリケーションがバックグラウンドにある場合、null 以外の参照を に渡すとsetCurrent、アプリケーション管理ソフトウェアによって、アプリケーションがフォアグラウンドに移動することを要求している要求として解釈される可能性があります...これらは要求のみであり、アプリケーション管理ソフトウェアがこれらの要求にタイムリーに準拠する必要はありません...


指定された動作に合わせて MIDlet を再設計することを検討してください。

myCanvasCanvas のインスタンスである場合、showNotify() イベントを使用できます

一般的なDisplayable画面の場合、 isShown()メソッドは、画面に実際に表示されているかどうかを確認します。

場合によっては、ユーザーがバックグラウンドからの復帰を明示的に確認できるようにすることも理にかなっています。

display.setCurrent(new Alert("back to foreground", "dismiss to continue...",
        null, AlertType.INFO), myCanvas);
于 2012-06-22T07:02:30.457 に答える