我在 J2ME 中做了一个小应用,它只是用目标链接打开浏览器。
尽管如此,它适用于某些型号的手机,而其他型号则不适用。
适用于:
我不的工作:
我不知道为什么它在某些手机中有效,而在其他手机中则无效。从理论上讲,它应该适用于支持 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);
}
答案 0 :(得分:6)
您不应该在platformRequest
等生命周期方法中执行startApp()
之类的操作。这是一个异步操作,需要询问用户权限等。这不应该在系统线程上完成。
调用系统线程的方法应尽可能快地返回,因为线程可能会负责执行其他操作,如屏幕重绘或处理用户输入。 platformRequest
是阻止操作,会导致您的设备冻结。
有些设备可以比其他设备更好地处理这种情况,这就是您看到差异的原因。
启动一个新线程来执行platformRequest
并且一切都应该很好;你几乎可以在任何地方开始你的新线程。