J2ME应用程序在诺基亚n81和三星f330等不起作用,但在BB和诺基亚N97等中有效

Kan*_*ani 4 mobile blackberry nokia java-me samsung-mobile

我在J2ME中做了一个小应用程序,它只是用目标链接打开浏览器.

然而,它适用于某些型号的手机,而其他型号则不适用.

它适用于:

  • 黑莓9000.
  • 诺基亚n97.
  • 黑莓Javeline 8900

Id 不起作用:

  • 诺基亚e71:它安装了应用程序,但浏览器无法打开.
  • 诺基亚n81:同上.
  • 三星f330:它无法安装该应用程序.
  • BB 9800:安装好.浏览器页面确定.关闭应用程序时,它会重新启动.(也许在JavaME中使用某种"finish()" 会有帮助吗?)

我不知道为什么它在某些手机中有效,而在其他手机中则无效.从理论上讲,它应该适用于支持J2ME(JavaME)的每部手机.

编辑:这是相关的代码.

protected void startApp() throws MIDletStateChangeException {
        // TODO Auto-generated method stub

    boolean mustExit = false;
    try {

        /**
         * mustExit - Boolean
         * 
         * Some MIDP platforms are more restricted than others.
         * For example, some don't support concurrent processing,
         * so the MIDlet must exit before the platform can honor
         * a service request.
         * 
         * If <true> destroy the app. So the browser
         * can start.
         */
        mustExit = platformRequest("http://www.stackoverflow.com");
    } catch (ConnectionNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    if(mustExit){
        destroyApp(true);
        notifyDestroyed();
    }

    //Display.getDisplay(this).setCurrent(timeAlert);

}
Run Code Online (Sandbox Code Playgroud)

fun*_*bro 6

你不应该像platformRequest生命周期方法那样做startApp().这是一个异步操作,需要询问用户权限等.这不应该在系统线程上完成.

调用系统线程的方法应尽可能快地返回,因为线程可能负责执行其他操作,如屏幕重绘或处理用户输入. platformRequest是阻止操作,会导致您的设备冻结.

有些设备可以比其他设备更好地处理这种情况,这就是您看到差异的原因.

开始一个新的线程去做platformRequest,一切都应该好; 你可以在任何地方开始你的新线程.