blackberry中的上一个实例仍处于活动状态错误
我创建了一个应用程序,用户可以从菜单和图标启动。我在我的应用程序中不使用GlobalEventListener,只需注册ApplicationMenuitem。现在我遇到了一个错误:在启动我的应用程序时,上一个实例仍然处于活动状态 复制的步骤并不简单: 从图标启动应用程序 不要关闭它,只需切换到其他应用程序 再次从图标启动应用程序 我在blackberry的论坛上创建了它,但我找不到应该删除我的ApplicationMenuItem的解决方案:它添加在手机开机时,应该一直显示出来 我的代码:blackberry中的上一个实例仍处于活动状态错误,blackberry,Blackberry,我创建了一个应用程序,用户可以从菜单和图标启动。我在我的应用程序中不使用GlobalEventListener,只需注册ApplicationMenuitem。现在我遇到了一个错误:在启动我的应用程序时,上一个实例仍然处于活动状态 复制的步骤并不简单: 从图标启动应用程序 不要关闭它,只需切换到其他应用程序 再次从图标启动应用程序 我在blackberry的论坛上创建了它,但我找不到应该删除我的ApplicationMenuItem的解决方案:它添加在手机开机时,应该一直显示出来 我的代码: p
public class Jingu extends UiApplication {
public static void main(String[] args) {
ApplicationManager app = ApplicationManager.getApplicationManager();
boolean keepGoing = true;
while (keepGoing) {
if (app.inStartup()) {
try {
Thread.sleep(1000);
} catch (Exception e) {}
} else {
keepGoing = false;
}
}
Jingu theApp = new Jingu();
theApp.initMenuItem();
theApp.showMainScreen();
theApp.enterEventDispatcher();
}
public Jingu() {
}
public void showMainScreen() {
showScreen(new JinguMainScreen(this));
}
public void initMenuItem() {
// Create menu item
Object o = RuntimeStore.getRuntimeStore().get(JinguMenuItem.MY_MENU_ID);
// register only if not done already.
if (o == null) {
new JinguMenuItem(this).registerInstance();
}
}
public void showScreen(Screen aScreen) {
synchronized (Application.getEventLock()) {
try {
UiApplication.getUiApplication().popScreen(aScreen);
} catch (Exception e) {
}
UiApplication.getUiApplication().pushScreen(aScreen);
}
}
}
public class JinguMenuItem extends ApplicationMenuItem {
public static final long MY_MENU_ID = 0xb9739d5240d5943dL;
private final Jingu jingu;
public JinguMenuItem(Jingu jingu) {
super(0x350100);
this.jingu = jingu;
}
public void registerInstance() {
Object menuItem = RuntimeStore.getRuntimeStore().remove(MY_MENU_ID);
if (menuItem == null) {
ApplicationMenuItemRepository amir = ApplicationMenuItemRepository.getInstance();
amir.addMenuItem(ApplicationMenuItemRepository.MENUITEM_SYSTEM, this);
RuntimeStore.getRuntimeStore().put(MY_MENU_ID, this);
}
}
public Object run(Object context) {
jingu.setDefaultFont(Font.getDefault());
jingu.setMainApp(false);
jingu.setBbmEditField(null);
jingu.showMainScreen();
return context;
}
public String toString() {
return "My Menu";
}
}
plz建议我应该在哪里删除应用程序中的ApplicationMenuItem
我的问候
Vadim
如果您正在从应用程序注册Apple MeNuIt,作为一个用户,我会认为您的应用程序删除和退出的方式不好,即使RIM提供了这样做的一种方式。您可能希望将应用程序分为两部分。其中一个为响应ApplicationMenuItem选择提供了最低限度的支持,该选择将自动启动并在后台运行。另一个具有所有其余部分,可以根据需要运行和退出。我的解决方案是: 创建替代入口点并在应用程序加载时运行 在其中注册菜单 不要使用runtimeStore因此,我应该让一个应用程序实例始终在后台运行?这是一种方法,但不是我建议的。作为对第2步的评论:我发现切换应用程序实际上会在默认情况下关闭你的应用程序,因此它基本上与点击“关闭”相同,这也只是关闭屏幕,从而调用onClose。您需要覆盖screen类的onClose,将其发送到后台。