如何将J2ME应用程序最小化?

7
我希望我的J2ME应用程序可以在后台运行,仍然允许用户正常使用手机,同时该应用程序需要在后台处理一些事件。
我还想允许用户在需要时停止该应用程序。
如何实现这一点?
5个回答

3

设备能否在后台运行应用程序取决于其多任务处理的能力。因此,更昂贵的PDA类型设备比低成本设备更有可能支持后台执行。在后台运行时:-

 private Display display = Display.getDisplay(this);
 private Displayable previousDisplayable;

 public void toBack() {
 previousDisplayable = display.getCurrent();
 display.setCurrent(null);
 }

并且前台:-

public void toFront() {
display.setCurrent(previousDisplayable);
}

请注意,不是所有设备都支持这些功能。(适用于诺基亚s60,索尼爱立信,但不适用于诺基亚s40,三星和其他一些设备)。


3
在J2ME标准中,我认为没有明确规定如何在后台运行midlet并仍然进行处理。通常情况下,当您的midlet移动到后台时,应该调用paused方法。
但并非每个供应商都以这种方式实现。在Symbian上,当最小化时,您的程序会继续运行,就好像没有任何变化一样。至少在N80和N90上是这样。

1

这并不总是被支持的,但在支持的手机上,命令是:

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

0
如果您的应用处于后台,则不会接收任何事件。所以我不知道它如何在后台处理任何事件。如果它是一个预装的 J2ME 应用程序,那么您可以与手机制造商合作并获取某些 jad 属性,以将您的 midlet 放在后台。这样,您就无法允许用户退出应用。您可能需要深思熟虑这个使用案例。
另一方面,您可以在黑莓应用中完成所有这些操作。

我的意思是,当我的应用程序在后台运行时,它仍然可以偶尔通过一个独立的线程发送短信到预定的号码。这可行吗? - Attilah
你可能无法直接实现。不过,你可以保持HTTP连接开启,向一个网页发送消息,让该网页将短信发送到该号码。 - omermuhammed
嘿@Attilah,你可以做到这一点。但是只有支持多任务处理的设备才能实现,例如诺基亚S60。 - Pushpendra Kuntal

-2
MIDlet.notifyPaused()

我需要midlet在后台继续运行(界面不显示,最小化,就像桌面应用程序一样)。据我所知,使用notifyPaused()方法将暂时暂停midlet的执行。 - Attilah
但是如果你的手机没有调用这个“notifyPaused()”回调方法怎么办呢? 相反,你的手机可能非常缺乏资源,并决定完全关闭你的J2ME程序。 - joe
这告诉midlet暂停而不是检测暂停方法。 - drubin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接